学习java数据库的基础操作:连接,增删查改;css的广泛应用,在此基础上,数据管理系统软件是这些知识点的综合项目

为了掌握和牢固java数据库的知识点,在空闲之余写了这个软件,数据库使用的是Mysql小型数据库,需要安装WAMP软件。也可以使用大型数据库甲骨文数据库,不知为何,中型的SQL Serve 2012数据库我一直没有连接成功。

本软件完成所需要的材料:

  1. java编译器 我的是Eclipse
  2. JDBC数据库连接池驱动包 sqljdbc42.jar
  3. javaFX环境 GUI界面编程
  4. wamp软件
  5. exe4j 很好用的jar打包软件,用来将jar文件打包成exe

数据管理系统软件可以让用户自定义需要创建的表,自定义表的字段的类型,属性,轻松插入数据,修改数据,查找数据,删除数据,利用各种统计图选择属性进行比较和走向趋势。例如管理学生信息,成绩和绩点比较,还可以将数据导出成为表格文件并利用打印机打印出来。

java数据库的连接

java连接mysql数据库需要相关的驱动,因为要连接mysql数据库,需要导入相关的封装好的类就是封装好的jar包,叫sqljdbcxx.jar,由于jdk版本不一样,所以需要不一样的xx版本对应的jar,在这里我使用的是sqljdbc42.jar,各种版本百度随便一搜就有了.

wamp状态为绿色则表示配置ok,可以正常使用sql服务,图如下

做好这些准备后我们就可以尝试连接数据库了

  • 我们先登入到mysql数据库,新建一个数据库,然后创建一个表,再往其中插入数据

    java连接数据库的代码部分为:
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import com.microsoft.sqlserver.jdbc.SQLServerException;
import com.mysql.jdbc.PreparedStatement;
//连接数据库要导入的一些模块Connection ct = null;   //新建一个连接对象
String dbURL="jdbc:mysql://localhost:3306/"+dbURL_+"?useUnicode=true&characterEncoding=UTF8";  //定义好要连接sql的数据库和一些字符编码设置
String sql = "select * from greens;"; //等会执行的sql语句 greens是要查询数据的表
try {//加载驱动Class.forName("com.microsoft.mysql.jdbc.mysqlDriver").newInstance();} catch (InstantiationException e) {wamp.setContentText("加载驱动有错误");}
ct = DriverManager.getConnection(dbURL,"root",""); //连接数据库 mysql phpadmin默认的管理员是root,密码为空
if(ct!=null) {  //如果连接的数据库不存在或者登入失败,dbURL语法错误(端口占用等等)try {re = ct.createStatement().executeQuery(sql); //执行sql语句,对表greens进行查询} catch (SQLException e) {wamp.setContentText("sql语句执行失败");}}    

如果没有问题(返回的ct不为空),那么将成功查询到greens中的数据

在软件中,我使用了用户输入来登入并连接数据库的输入框

登入成功后将显示连接的数据库和表
右边的表选择器有这个数据库的所有表

java数据库的增加(新建数据库)

首先 ,我们需要知道新建数据库的java代码,如下:

sqlCommand = "Create database "+newDB;  //新建数据库的名
//先连接数据库
/*..上面的代码..*/
//连接成功后执行语句,更上面一样
ct.createStatement().execute(sqlCommand); //执行了之后新建的数据库就在


java数据库之删表操作

//先进行连接数据库String SQLcommand = "delete from "+tab+" where "+column1+" = "+column1Value+";";
//然后执行SQLcommand 语句
ct.createStatement().execute(SQLcommand);

这样 成绩表就删完了

java删表的数据的操作

一般来说,表的第一个字段就是它的id,id是每个数据的身份证,在数据库中找到它并且执行语句就可以将id符合的删除.函数返回了一个字符串用来告诉用户删除是否成功,函数代码如下:

public String deleteTableData(String user,String pass,String db,String tab,String column1,String column1Value) {//                           用户账号     密码        数据库     表       字段名          字段值//大多数默认情况是第一列是身份证标识,不可以存在重复的数据,不然将匹配多个。String result = "删除成功!";String dbURL = "jdbc:mysql://localhost:3306/"+db+"?seUnicode=true&characterEncoding=UTF8";String SQLcommand = "delete from "+tab+" where "+column1+" = "+column1Value+";";  //主要sql语句知识点Connection ct = null;try {ct = DriverManager.getConnection(dbURL, user, pass);if(ct!=null) {ct.createStatement().execute(SQLcommand);result = "删除完毕!";}} catch (SQLException e) {result = "SQL连接失败";}return result;}


进入删除模式
id为15和19的已删除

java的建表操作,创建一个新的表

建表比较复杂,它需要收集用户建立的字段数和字段属性,字段属性长度,数据判断是否合法,类型之间的关系
代码如下:

//用户的每个字段我用ArrayList<String>来储存,长度值,字段类型同理
fullOfTabDataName = new ArrayList<>();
fullOfTabDataType = new ArrayList<>();
fullOfTabDataLength = new ArrayList<>();
//...一些方法收集用户的数据
//然后提交
public String tabCreate(String db,String user,String pass,ArrayList<String> tabName_and_columnName,ArrayList <String> type,ArrayList<String> length) {//参数有(数据库  用户  密码   表的名和字段名整合的一个arraylist数组 字段类型数组  字段长度数组)String result = "新建表成功!";Connection ct = null;ArrayList<String> language = new ArrayList<>();String dbURL="jdbc:mysql://localhost:3306/"+db+"?useUnicode=true&characterEncoding=UTF8";//尝试加载驱动try {ct = DriverManager.getConnection(dbURL,user,pass);} catch (SQLException e) {//System.out.println("连接失败:\n"+e.getMessage()+"\n"+e.getSQLState()+"\n"+e.getErrorCode()+"\n"+e.getLocalizedMessage());result = "连接数据库时有错误,错误类型1:"+e.getMessage();}if(ct == null) {result = "连接数据库"+db+"不成功。";}else {//类型转高级语言码//这里我只写了两种类型的语言转化,后面更新软件的版本会继续添加更多类型for(int j = 0;j<type.size();j++) {if(type.get(j).equals("文本")) {language.add("char");}else if(type.get(j).equals("整数")) {language.add("int");}else {language.add("char");}}}StringBuilder sql = new StringBuilder();   //确定建表时将要执行的sql语句sql.append("create table "+tabName_and_columnName.get(0).toString()+"(");for (int i = 0;i<(tabName_and_columnName.size()-1);i++) {//因为 0是表名 所以-1  再-1是为了控制格式if(i<(tabName_and_columnName.size()-1)-1)if(language.get(i).equals("char")) {sql.append(tabName_and_columnName.get(i+1)+" "+language.get(i)+" ("+length.get(i)+"),");}elsesql.append(tabName_and_columnName.get(i+1)+" "+language.get(i)+",");elseif(language.get(i).equals("char")) {sql.append(tabName_and_columnName.get(i+1)+" "+language.get(i)+" ("+length.get(i)+") )");}elsesql.append(tabName_and_columnName.get(i+1)+" "+language.get(i)+")");}try {sql.append(" engine= Innodb charset=utf8;");System.out.println(sql); ct.createStatement().execute(sql.toString());} catch (SQLException e) {result = "执行语句失败,原因可能有如下等\n1.表名跟数据库里所拥有的表重复\n2.中文(表/字段)名没有加双引号\n3.执行的sql语句错误";}return result;}

结果如下:


系统会自动判断表名和每个输入框的值,数据是否符合要求


填写一些属性


点击确定时提示建的表的所有字段
这时候我们返回到主界面查看所建立的表

新的表已经建好

java数据库操作之增加数据

新的表建好了,我们可以往这个表添加数据,java的数据库增加数据代码主要如下:

//最基本的知识点String result = "执行成功,成功插入";Connection ct = null;String sqlCommand = "insert into "+tab+" values(";for(int i  = 0;i<insert_column_data.size();i++) {if(i <insert_column_data.size()-1)sqlCommand = sqlCommand+insert_column_data.get(i)+",";elsesqlCommand = sqlCommand+insert_column_data.get(i)+")";}//sqlCommand是 将要执行的sql语句//下面进行连接数据库 和 执行sqlCommand语句String db_reference = "jdbc:mysql://localhost:3306/"+db+"?useUnicode=true&characterEncoding=UTF8";try {ct = DriverManager.getConnection(db_reference, user, pass);if(ct!=null) {try {ct.createStatement().execute(sqlCommand);}catch(Exception error2) {result = "执行的时候出错,请检查数据合法性";}}else {result = "数据库出差错了。";}}catch(Exception e) {result = "连接数据库时出错了。";}return result;}

我们使用GUI界面编程的时候怎么知道这个表有多少个字段 或者字段类型 字段长度呢?
代码如下:

ArrayList<String>wait_insert_column_eachName = new ArrayList<>();
ArrayList<String>wait_insert_column_eachType ;
ArrayList<String>wait_insert_column_eachType_size ; //大小
//下面类的三个方法 分别得到
//表的每个字段的名字
//表的每个字段类型  比如 int
//表的每个字段的类型的长度
column_eachName = SQL.getColumnName(curr_db, curr_user, curr_pass, curr_tab);
wait_insert_column_eachType= SQL.each_getColumn_type(curr_db, curr_user, curr_pass, curr_tab);
wait_insert_column_eachType_size = SQL.each_getColumn_type_size(curr_db, curr_user, curr_pass, curr_tab);

三个方法具体实现如下

public List<String>getColumnName(String dbURL_2,String name_2,String pass_2,String sql2){//参数:                               数据库                                     用户名                            密码                               表List<String>name= new ArrayList<>();  //返回所有字段名字Connection ct = null;String dbURL="jdbc:mysql://localhost:3306/"+dbURL_2+"?useUnicode=true&characterEncoding=UTF8";ResultSet re2 = null;sql2 = "select * from "+sql2+";";try {try {try {Class.forName("com.microsoft.mysql.jdbc.mysqlDriver").newInstance();System.out.println("连接成功、");} catch (InstantiationException e) {} catch (IllegalAccessException e) {}//System.out.println("加载数据库成功");} catch (ClassNotFoundException e) {//System.out.println("加载数据库失败了");}ct = DriverManager.getConnection(dbURL,name_2,pass_2);} catch (SQLException e) {//System.out.println("连接失败:\n"+e.getMessage()+"\n"+e.getSQLState()+"\n"+e.getErrorCode()+"\n"+e.getLocalizedMessage());}if(ct!=null) {try {re2 = ct.createStatement().executeQuery(sql2);ResultSetMetaData data = re2.getMetaData();for(int i = 0;i<data.getColumnCount();i++) {name.add(data.getColumnName(i+1));}} catch (SQLException e) {re2 = null;}try {ct.close();} catch (SQLException e) {System.out.println("关闭失败");}}return name;}
public ArrayList<String>each_getColumn_type(String dbURL_2,String name_2,String pass_2,String sql2){//       数据库                              用户名                           密码                                表ArrayList<String> resu = new ArrayList<>();Connection ct = null;String dbURL="jdbc:mysql://localhost:3306/"+dbURL_2+"?useUnicode=true&characterEncoding=UTF8";ResultSet re2 = null;sql2 = "select * from "+sql2+";";try {ct = DriverManager.getConnection(dbURL,name_2,pass_2);} catch (SQLException e) {System.out.println("出错");}if(ct!=null) {try {re2 = ct.createStatement().executeQuery(sql2);ResultSetMetaData data = re2.getMetaData();for(int i = 0;i<data.getColumnCount();i++) {resu.add(data.getColumnTypeName(i+1));}} catch (SQLException e) {re2 = null;}try {ct.close();} catch (SQLException e) {System.out.println("关闭失败");}}return resu;}
public ArrayList<String>each_getColumn_type_size(String dbURL_2,String name_2,String pass_2,String sql2){//       数据库                              用户名                           密码                                表ArrayList<String> resu = new ArrayList<>();Connection ct = null;String dbURL="jdbc:mysql://localhost:3306/"+dbURL_2+"?useUnicode=true&characterEncoding=UTF8";ResultSet re2 = null;sql2 = "select * from "+sql2+";";try {ct = DriverManager.getConnection(dbURL,name_2,pass_2);} catch (SQLException e) {System.out.println("出错");}if(ct!=null) {try {re2 = ct.createStatement().executeQuery(sql2);ResultSetMetaData data = re2.getMetaData();for(int i = 0;i<data.getColumnCount();i++) {resu.add(String.format("%d",data.getColumnDisplaySize(i+1)));//   System.out.println(String.format("%d",data.getColumnDisplaySize(i+1)));}} catch (SQLException e) {re2 = null;}try {ct.close();} catch (SQLException e) {System.out.println("关闭失败");}}return resu;}

三个函数返回的都是装满了数据的arrayList<‘string’>数组,得到了就可以确定输入数据的字段数是多少了,
每个字段的类型是什么,长度限制等等

结果如下:

系统自动判断了该表有8个字段 ,每个字段的类型 ,每个字段类型的长度,下面进行添加数据


好了,数据插入成功有提示,提示 或者不提示你成功插入数据 可以在设置里改(后面有说明)



刷新后我们就可以看到插入的数据

java数据库之查找

有时候需要查找并且删除详细资料,代码流程如下:

//连接数据库
//执行语句
//获取结果

结果如下:


java 持久化操作之 设置和配置

为了让用户体验更好 可以对软件进行一些属性设置
可以设置字体和大小

背景和皮肤

目录
Boss键

一些限制设置,按钮风格,各种颜色


总的来说,消化这些知识点是需要一定时间的,如果有什么功能想知道怎么实现或者需要代码包jar学习的
可以留言

java之数据管理系统软件相关推荐

  1. JAVA查询用户卡包,一种Java卡包数据管理方法

    一种Java卡包数据管理方法 [技术领域] [0001] 本发明涉及计算机技术领域,具体涉及一种Java卡包数据管理方法. [背景技术] [0002] 随着金融电子化的全面发展,为解决用户对一卡多用的 ...

  2. SLG手游Java服务器数据管理方案

    前言 这一年左右的时间,我参与并完成了一款SLG手游的研发,我负责游戏的服务端研发.这是一款以三国为题材的游戏,除了有三国名将的卡牌养成.多种多样装备养成.PVE,玩家竞技场等常见玩法外,我们的游戏的 ...

  3. java内存数据管理

    准确的说应该是java8以前的内存管理方式 区别在永久代(方法区)上 public class RamManager {//1.a存储于永久代public static int a =1;privat ...

  4. 第二期阿里巴巴 Java Meetup 来北京了。你来么?

    在互联网.云计算.物联网高速发展的今天,Java以其良好的安全性.开放性.稳定性.跨平台性等特性,始终保持着领先地位.阿里巴巴和国内很多公司一起,积极主动得参与Java生态的建设,贡献了许多优秀的开源 ...

  5. java图形化界面操作和命令行操作,常用的命令行指令

    第1章  JAVA语言概述 系统软件即操作系统 做开发需要掌握一定的命令行指令 Java程序执行需要借助命令行 打开cmd方式 一 点击搜索输入cmd 二 按window键加R键,弹出窗口后再输入cm ...

  6. BDB 入门篇 第1章 Berkeley DB Java Edition简介

    1. Berkeley DB Java Edition 简介 Berkeley DB Java Edition官网 Berkeley DB Java Edition官网文档 JE是一个100%用Jav ...

  7. 基于JAVA疫苗预约系统设计与实现 开题报告

      本科生毕业论文 基于Java疫情疫苗预约系统springboot框架 开题报告 学    院: 专    业: 计算机科学与技术 年    级: 学生姓名: 指导教师:   XXXX大学本科生毕业 ...

  8. (附源码)ssm无人机数据管理系统 毕业设计 111022

    ssm无人机数据管理系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采 ...

  9. linux搭建ca服务器搭建,linux下安装EJBCA 搭建私有CA服务器

    linux下安装EJBCA 搭建私有CA服务器 EJBCA是一个全功能的JAVA的CA系统软件,我们可以用此搭建私有CA服务器: 一:首先我的测试环境: 1.  linux mint18.3 62位: ...

最新文章

  1. “光名字就想了一年”,苹果三位高管谈M1芯片
  2. 一年以来我最好的创意
  3. pycharm 皮肤主题及个性化设置
  4. 学习笔记 - 002
  5. python为mysql设置id自增长_python mysql自增字段AUTO_INCREMENT值的修改方式
  6. sqlserver sql行专列_Sqlserver 列转行 行转列
  7. 招聘笔试行测题之图形推理题解题思路汇总
  8. java 英文题_java英文试题
  9. 怎么把qlv格式转成mp4
  10. 《编码:隐匿在计算机软硬件背后的语言》一书勘误
  11. 网络爬虫爬取时,被封的原因以及防止被封IP策略
  12. Anchor box坐标(Sac,Sar,Eac,Ear)到Precdict box坐标(Spc,Spr,Epc,Epr)关系推导
  13. F28335的DSP中主频的配置
  14. Python生成透明背景图片
  15. 15k的php会什么,【后端开辟】15k的php须要控制什么手艺
  16. Android手机图片上传 选择不了本地照片 解决方案
  17. 解决win10下 git闪退的问题(或者使用git命令报错fatal: open /dev/null or dup failed)
  18. HDU 6608:Fansblog(威尔逊定理)
  19. InputStream 和OutputStream
  20. 《数据结构》实验报告七:查找

热门文章

  1. 自定义线程池拒绝策略
  2. CVPR 2022上人脸识别相关的论文分类整理
  3. 一款功能强大的客户端研发助手,适用于 iOS 、Android、微信小程序 !移动端开发必备...
  4. [Re]南邮ctf平台逆向题
  5. brafteditor防抖_braft-editor
  6. STM32之ADM706驱动
  7. 树莓派python工业数据采集系统
  8. Fanuc数据控机床数据采集Focus2基于c#的数据采集
  9. Creo导入电路生成的emn格式文件并编辑标注尺寸-提示不重新生成模型错误-解决
  10. [DCDC](DC-DC 电感)纹波率r是难题?来我这里来学习