应用程序初始化数据库配置小程序

  之前写过一个Java版的信息管理系统,但部署系统的时候还需要手动的去配置数据库和导入一些初始化的数据才能让系统运行起来,所以我在想是不是可以写一个小程序在系统初次运行的时候自动部署数据库和导入一些初始化数据。然后就有了以下的思路:

  在应用程序入口处判断数据库是否已经配置完成,若配置完成则进入正常的登录系统完成正常操作即可,若未配置则进入数据库配置的小程序完成数据库配置然后再进入系统,但如何来判断是否已经配置完成呢,在这里我用的是比较原始的方法,配置数据库的时候系统会在相关目录下自动生成一个关于数据库相关的配置文件(config.xml),该配置文件说明了数据库的种类,数据库的用户名,数据库的密码(涉及到的安全性问题之后再处理),以及应用程序所用到数据库也就是即将自动创建的数据库名,所以在应用程序启动的时候系统会去检测相关路径下是否有该配置文件,若该文件存在则数据库配置完成,否则该系统是初次运行,需要启动数据库配置小程序。进入数据库配置小程序后,会弹出一个弹出式对话框,我们需要选择使用到的数据库以及输入数据库用户名,密码以及系统用到的数据库的名,点击测试按钮查看是否可以连接上数据库,若能完成连接则会多出一个初始化按钮,点击初始化按钮会执行相应的创建数据库数据表以及导入数据等操作,而这些操作则可以通过读取初始化文件(文件中是初始化执行的sql语句),初始化完成即完成了整个数据库的初始化任务,然后会调用正常的登录程序登录进入系统。

  所以整个流程总结下来就是,运行应用程序——>判断相关目录下是否有数据库的配置文件(config.xml)(有则进入正常的登录程序)——>若没有则运行数据库初始化小程序——>选择数据库类型,输入用户名密码以及新建的数据库的名——>点击测试按钮(测试不通过检查数据库重试)——>测试成功则点击初始化按钮完成初始化——>初始化任务完成后会跳转到正常的登录程序。

  程序入口判断程序

package hxy;
import java.io.File;
class CreateDBConfig {public CreateDBConfig(){try {File file = new File("config");File filePath = new File("config//config.xml");if(!file.exists()){if(file.mkdir()){if(!filePath.exists()){new DBForm();}else{System.out.print("配置文件创建失败!!!");}                            }else{System.out.println("目录创建失败!!!");}}else{if(!filePath.exists()){new DBForm();}else{System.out.println("数据库已经配置成功直接进入应用!!!");}}} catch (Exception e) {e.printStackTrace();}    }
}

  数据库选择界面以及控件监视器程序(完成配置数据的收集然后交给配置文件生成程序生成相应的配置文件)

在这里界面主要是一个下拉列表框提供数据库的类型的选择,目前我只提供了mysql和sqlserver两种数据库的选择,有兴趣的可以自己添加其他的数据库的相关选项,这里还有一点我没考虑那就是数据库的位置,因为我这里写的主要是为了连接本地数据库所以我的数据库连接字符串中的地址都是localhost(127.0.0.1),如果这里需要连接网络数据库的话,我们可以在对话框中添加连接字符串的输入框,如此就可以连接上网络数据库了,所以界面上只有用户名和密码以及数据库名的说明,当然如果需要更详细的配置的话我们也可以在配置文件中添加更详细的子标签和在对话框中设置更详细的选项。

public Database getDatabase(){Database db = new Database();String dbType = databaseType.getSelectedItem().toString().trim();System.out.println(dbType);String dbUser = userName.getText().trim();@SuppressWarnings("deprecation")String dbPassword = password.getText().trim();String dbName = databaseName.getText().trim();if(dbType==null|dbUser==null|dbPassword==null|dbName==null){new JOptionPane().showMessageDialog(okButton, "请完善数据库信息!!!");;}else{if(dbType.equals("MySql")){db.setType(dbType);db.setDriver("com.mysql.jdbc.Driver");db.setUri("localhost");db.setPort("3306");db.setUser(dbUser);db.setPassword(dbPassword);db.setName(dbName);}else{                db.setType(dbType);db.setDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver");db.setUri("localhost");db.setPort("1433");db.setUser(dbUser);db.setPassword(dbPassword);db.setName(dbName);}}            return db;}

  在弹出式对话框中我们填写了详细的数据库的配置信息,这些信息综合成了一个实体类Database,如此将这些配置设置成私有成员变量,这样在之后的调用中也只需要调用xml文件解析器来获取相应的配置然后把配置信息注入到一个Database的实体中,如此这个实体就拥有了所有的配置信息,连接程序只需要调用这个实体就可以获取到和数据库相连的需要的信息来完成连接和后期的数据库交互。  

配置文件生成程序即把数据库的相关信息写入配置文件供系统之后连接数据库时读取,所以这里生成配置文件还有一个比较好的好处就是我的程序不需要写死就是在程序中就需要完全的把数据库的相关信息写进入,这里我只需要读取配置文件然后注入到相关的方法中就行。至于配置文件生成器就是先创建一个文件,然后根据相应的配置数据写入到文件中,当然这是一个xml文件,也可以使用dom4j等来科学的写入和修改,但这样比较简单粗暴,至于xml文件的解析器和生成器程序在以后的博文中相应的介绍到。

  这个小程序完全是因为自己的小想法和小猜想去实践写的并应用到了我的之前的那个信息管理系统中,以上是小程序所有代码中一部分,程序完整代码在我的GitHub中(https://github.com/huangxinyuan650/ConnectDatabase)欢迎大家批评指正

转载于:https://www.cnblogs.com/huangxinyuan650/p/5998759.html

应用程序初次运行数据库配置小程序(Java版)相关推荐

  1. uni-app运行到微信小程序、手机端

    - 安装微信开发者工具,地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html - 打开服务端口:启动微信 ...

  2. 微信小程序怎么取mysql,微信小程序怎么读取数据库?小程序如何读取数据?

    微信小程序怎么读取数据库?小程序如何读取数据?各位微信用户们,如果你再开发微信小程序的过程中,需要微信小程序读取数据库的话,就跟着小编往下看微信小程序怎么读取数据库. 微信小程序怎么读取数据库? 微信 ...

  3. audio 小程序 放大_码code | 小程序新能力释放,人人都能拥有对话机器人

    当用户在小程序内发起对话,你是在后台抓紧安排人工回复吗? 由于等待回复时间过长,用户产生不满并弃用了你的小程序. "秒回"是对话的基本要求,及时回复才能给到用户尊重和被重视感.然而 ...

  4. 微信小程序云开发 mysql_微信小程序云开发数据库

    如在云开发数据库的基础介绍中所说,云开发提供了一个 JSON 数据库,本章将介绍以下内容: 上手:用控制台创建我的第一个集合,插入我的第一条数据 数据类型:了解数据库提供的数据类型 权限控制:控制集合 ...

  5. 华为服务器微信公众号,记录:华为配置小程序后台服务器

    # 记录:华为配置小程序后台服务器 ## 零.前言 之前做个一个RSS阅读器的微信小程序,还取了个名字:**真简阅读器**,后端由腾讯云驱动,最近刚好到期了,就迁移到了华为云.最明显的不同就是华为云默 ...

  6. 发环境 及demo运行的微信小程序

    一.首先准备下本地环境(本地就需要一个微信开发工具) 1.首先得有一个微信小程序账号,登陆微信小程序首页:mp.weixin.qq.com,点击右上角立即注册. 注册登陆后,首页填写一些小程序基本信息 ...

  7. uni-app解析及配置(小程序对应的转换)

    变化 文件变化: 以前是.html文件,现在是.vue文件 网络模型变化: 以前网页大多是b/s,服务端代码混合在页面里: 现在是c/s,前后端分离,通过js api(类似ajax的uni.reque ...

  8. uniApp运行到微信小程序

    这篇文章主要就是记录uniApp运行到小程序的过程. 首先,咱得有个HBuilderX账号 为什么呢?首先哈,进来这个配置,就要点击获取这个ID哈,但是捏,没有账号是获取不到的   呐,点击获取就会出 ...

  9. 小程序 | 小程序中常用的事件 + 事件对象的属性列表 +小程序事件传参 + 小程序全局配置 + 小程序页面配置 + 小程序发起网络数据请求

    文章目录 一.WXML 模板语法 数据绑定 事件绑定 ⭐小程序中常用的事件 ⭐事件对象的属性列表 target 和 currentTarget 的区别 bindtap 的语法格式 在事件处理函数中为 ...

最新文章

  1. 2021年大数据Flink(三十七):​​​​​​​Table与SQL ​​​​​​案例四
  2. 分组表管理之保存分组表数据
  3. python_bomb----函数高级特性(生成器)
  4. expect简单教程
  5. DFT实训教程笔记3(bibili版本)-SOC Scan Implementtation Scan Practice Session II
  6. linux echo命令
  7. 【牛客 - 368C】流星雨(概率dp,乘法逆元)
  8. 计算机应用基础专2020春,计算机应用基础(专)(专,2020春)(20200831130023).pdf
  9. x=5y=8c语言表达式,中国大学MOOC: 假设变量x的位数为n(n=8),x的最高有效字节不变,其余各位全变为0,则对应C语言表达式为( )。 答案:(x(n-8))(n-8)...
  10. 批量拷贝文件到服务器,Syncovery(数据备份工具)如何在windows下远程访问服务器批量拷贝文件?Syncovery图文教...
  11. 在centos linux上安装jdk7
  12. php如何打包成apk,windows下PHP批量生成打包android程序APK
  13. 相机成像原理RAW,RGB,YUV
  14. dwg文件怎么转换成pdf格式的文件?
  15. PS如何删除智能图层为可编辑状态
  16. win10运行python没有硬编码器_windows下关于python的编解码问题
  17. Java Rasp技术浅析
  18. Java字符串格式化详解
  19. 计算机数字媒体技术考研的学校有哪些,数字媒体技术考研能选择哪些学校
  20. Hibernate常见问题 No row with the given identifier exists问题的原因及解决

热门文章

  1. 一个STM32编译Makefile模板
  2. idea编译后target文件不全_IntelliJ IDEA 不能更新target中的java等部分文件
  3. 95-20-025-启动器-AbstractBootstrap
  4. 【Elasticsearch】Meltdown对Elasticsearch性能的影响
  5. 【Clickhouse】Clickhouse PRIMARY KEY, CONSTRAINT, identifier, column declaration, INDEX
  6. 【jvm】jvm 执行模式设置
  7. 【Kafka】kafka 0.10.0 版本低级消费 API
  8. 【Java】5 个刁钻的 String 面试题
  9. 【Java】ThreadLocal SimpleDateFormat 静态代码块 空指针异常
  10. 【Kafka】Kafka创建Topic的时候提示WARNING: Due to limitations in metric names, topics with a period ('.')