嵌入式数据库管理

背景

在Java桌面应用开发中,特别是使用Eclipse RCP框架构建的企业级应用中,经常需要集成数据库管理功能以方便开发者或管理员进行数据查看和维护操作。传统的数据库管理需要单独启动数据库管理工具或打开浏览器访问管理页面,操作流程繁琐且不利于应用集成。


目标

  • 嵌入式数据库管理:在Java桌面应用中直接嵌入H2数据库的Web管理控制台,实现数据库操作的无缝集成
  • 自动登录认证:通过JavaScript自动填充登录表单,实现一键登录数据库管理界面
  • 图形化数据库操作:提供完整的H2数据库Web管理功能,包括SQL执行、表结构查看、数据编辑等
  • 简化开发流程:减少开发者在数据库管理和应用开发之间的切换,提升开发效率

实现

基于 Eclipse RCP 技术框架开发,企业级应用的技术。并使用基于 SWT Browser 组件和 JavaScript 自动化技术,实现H2数据库管理界面的自动登录和集成。

嵌入式数据库管理

代码

java 复制代码
package com.antzou.business.system;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;

import com.antzou.jpa.common.JPAUtil;

public class DbaComposite extends Composite {
	private Browser browser;
	private boolean credentialsFilled = false;

	public DbaComposite(Composite parent, int style) {
		super(parent, style);
		createContent();
	}

	private void createContent() {
		setLayout(new GridLayout(1, false));
		browser = new Browser(this, SWT.NONE | SWT.WEBKIT);
		browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

		browser.addProgressListener(new ProgressListener() {
			@Override
			public void completed(ProgressEvent event) {
				if (!credentialsFilled && browser.getUrl().contains("login.jsp")) {
					fillCredentials();
					credentialsFilled = true;
				}
			}

			@Override
			public void changed(ProgressEvent event) {
			}
		});

		browser.setUrl("http://localhost:" + JPAUtil.H2_WEB_PORT + "?language=zh_CN");

	}

	private void fillCredentials() {
		// 执行JavaScript来自动填充登录表单
		String script = String.format("var userField = document.querySelector('input[name=\"user\"]');"
				+ "var passwordField = document.querySelector('input[name=\"password\"]');"
				+ "var urlField = document.querySelector('input[name=\"url\"]');"
				+ "if (userField && passwordField && urlField) {" 
				+ "   userField.value = '%s';" 
				+ "   passwordField.value = '%s';"
				+ "   urlField.value = '%s';"
				+ "   document.querySelector('input[type=\"submit\"]').click();" + "}", "antrcp", "antrcp", "jdbc:h2:file:~/.antrcp/assistant");

		browser.execute(script);
	}
}

应用下载

源码模板

相关推荐
Highcharts.js8 小时前
Highcharts 下钻(Drilldown)柱状图 Demo
数据库·信息可视化·hbase·highcharts·drilldown·js模块·下钻图表
翼龙云_cloud8 小时前
阿里云国际渠道代理商:如何在ECS上部署Flask应用?
运维·数据库·阿里云·flask·云计算
进阶的小木桩8 小时前
mysql 安装问题解决方案记录
数据库·mysql
2601_962071579 小时前
如何利用SpringSecurity进行认证与授权
java·服务器·数据库
山峰哥9 小时前
数据库工程与查询优化案例深度复盘‌
数据库·sql·oracle·编辑器·深度优先·宽度优先
IT大白鼠9 小时前
MSF数据库与资产管理——专业渗透测试流程
数据库·安全·msf
IvorySQL9 小时前
PostgreSQL 日报|内核多项缺陷修复与数据校验补丁推进(8 月 27 日)
数据库·postgresql·区块链
风吹心凉9 小时前
Agent大脑-RAG知识库
数据库
VALENIAN瓦伦尼安教学设备10 小时前
设备状态检测振动分析实训台案例分析
大数据·数据库·人工智能·嵌入式硬件·算法
黄俊懿10 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第十节:网关安全-单向加密
网络·数据库·计算机网络·安全·架构·系统架构·架构师