Java连接MySQL数据库命令行程序过程
SQL编程包括两种形式,一种是过程化编程,主要通过数据库交互式工具,通过存储过程、触发器、函数等形式的编程;另一种是嵌入式SQL编程,将SQL语句嵌入到高级开发语言,完成数据的各种操作。
命令行程序由于对外依赖的jar包少易上手,通常作为教学示例程序。我们通过命令行 程序介绍嵌入式SQL开发过程,示例开发工具选择idea。
创建表
通过SQLyol建立表student;
CREATE TABLE student( Sno VARCHAR(10) PRIMARY KEY, Sname VARCHAR(50), Ssex VARCHAR(2), Sage INT, Sdept VARCHAR(50) )
插入数据:
创建命令行程序
新建一个命令行程序,打开idea工具,选择:File—>New—>Project,弹出对话框,如下图所示
直接点击Next按钮,进入到下一个Tab页,勾选Create project from template,选择Command line App
点击Next进入下一个Tab页,如图所示
输入项目名称,选择项目路径,书写基本包包名,基本包名一般由com+域名组成,确保其唯一性。填写完成后,点击finish按钮,完成命令行程序的创建,创建完成的页面如下图所示
下载并导入jar包
下载mysql-connector-java-8.0.13.jar;下载地址,,将jar包存入本地目录。
项目中导入Jar包。点击File—>ProjectStructure 打开对话框,如下图所示
点击右侧“+”,选择“JARs or directories”,弹出对话框,选择刚才下载的jar包,如下图所示:
点击OK,完成jar包的导入,导入后就可以在工程中看到导入的jar包,如下图
创建工具包
在开始练习时,就应该形成一个良好的习惯,将不同类型的类放置在不同包中,创建工具包util,用存放公共使用的工具类,这里的类一般使用静态方法。
创建数据库连接类:
代码如下:
public class MySqlConnection { private static Connection con=null; private static String driveName ="com.mysql.cj.jdbc.Driver"; private static String url = "jdbc:mysql://127.0.0.1:3306/sl?serverTimezone=GMT%2b8"; private static String user="root"; private static String pws="root"; private MySqlConnection(){} public static Connection getCon(){ if(con==null){ con = getConnection(); } return con; } private static Connection getConnection(){ Connection connection = null; try { Class.forName(driveName); connection = DriverManager.getConnection(url,user,pws); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); }finally { return connection; } } }
这里的方法使用static 修饰代表是静态方法,该方法属于类,而不是对象;
创建SQL执行包装类,完成数据库各种方法的执行,这里仅写了一个返回ResultSet方法,代码如下:
public class MysqlHelp { public static ResultSet query(String sql) { Connection con = MySqlConnection.getCon(); ResultSet result =null; try { Statement stmt = con.createStatement(); result= stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); }finally { return result; } } }
创建实体类
创建pojo包,在该包下创建实体类Student,实体类只包含私有属性和get、set方法,为了简单期间,增加了一个lombok包,就不需要写get、set方法。lombok jar的安装,File—>Settings ,打开对话框如下图:
在实体类上加主解符“@Data”即可。
当然也可以不用Lombok,老老实实的写get、set方法也可以,使用lombok代码如下
@Data public class Student { private String sno; private String sName; private String sSex; private int sAge; private String sDept; public Student(String sno,String name, String sex,int age,String dept){ this.setSno(sno); this.setSAge(age); this.setSName(name); this.setSDept(dept); this.setSSex(sex); } public String getInfo(){ return "学号:"+sno +"姓名:"+sName+"性别:"+sSex+"年龄:"+"院系:"+sDept; } }
为了演示方便,在实体类中增加了一个构造函数和字符串的输出,实体类当然完全没有这两个方法。
创建持久化层
创建一个dao包,包中创建类StudentDao,完成数据的存取操作,代码如下
public class StudentDao { public void getStudentInfo(){ String sql="SELECT Sno AS sno,Sname AS NAME,Ssex AS sex,Sage AS age,Sdept AS dept FROM student"; ResultSet result = MysqlHelp.query(sql); if(result!=null) { while (true) { try { if (!result.next()) break; String sno = result.getString("sno"); String name = result.getString("name"); int age = result.getInt("age"); String dept = result.getString("dept"); String sex = result.getString("sex"); Student student = new Student(sno, name, sex, age, dept); System.out.println(student.getInfo()); } catch (SQLException e) { e.printStackTrace(); } } } }
这里调用了上面定义的 MysqlHelp的query方法,完成数据的存取及结构化数据向面向对象实体类的转换。
业务层调用
打开main函数,写入下代码,完成dao层方法调用
public class Main { public static void main(String[] args) { StudentDao student = new StudentDao(); student.getStudentInfo(); } }
执行结果如下:
总结
在这里尽量使用面向对象的封装技术,将每个类的职责单一化,而不是把所有代码写到一起的做法,尽管写到一起,代码更好读,而且简单。另外思考一个问题,我们能不能把结构化的数据自动转换为实体对象,以及数据库的连接、SQL的执行交给第三方的程序去做,简化我们的代码?答案是肯定的,Mybaits、hibernet就是完成这些工作的框架
以上就是Java连接MySQL数据库创建命令行程序过程的详细内容,更多关于Java连接MySQL数据库的资料请关注猪先飞其它相关文章!
相关文章
- 操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
- 本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
- 这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
- 在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
- 新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
- C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
- 通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
- 某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
- mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
深入研究mysql中的varchar和limit(容易被忽略的知识)
为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15- 1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
- 这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
- 我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
- yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
- 宿主机使用网线的时候,客户机在Bridged Adapter模式下,使用Atheros AR8131 PCI-E Gigabit Ethernet Controller上网没问题。 宿主机使用无线的时候,客户机在Bridged Adapter模式下,使用可选项里唯一一个WIFI选项,Microsoft Virtual Wifi Miniport Adapter也无法上网,故弃之。...2013-09-19
- 这几天在centos下装mysql,这里记录一下安装的过程,方便以后查阅Mysql5.5.37安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。安装cmake复制代码 代码如下: [root@local ~]# wget http://www.cm...2015-03-15