1. 什么是数据库
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序
如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun
Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
各数据库厂商根据JDBC的规范,实现自身数据库操作的功能代码,然后以jar包(数据库厂商提供的驱动
包)的形式提供给开发人员使用,开发人员使用反射的机制创建这些具体实现类,按照JDBC的规范来完成数据库的操作.
2. 设计数据库表
先设计一个数据库表,用于保存用户信息,建表语句如下:
在用户表中定义了几个字段,分别是id,user_name,age,sex,create_dt,其中id是主键,是自增长的,user_name表示用户名,age表示用户年龄,sex表示用户的性别,这里的性别用数字表示,0表示女性,1表示男性,create_dt表示创建的时间。预先在数据库中插入几条数据,数据如下:
3. 定义实体类
4.. 定义数据库连接类
定义一个数据库连接类,用于获取MySQL的连接
MySQL的JDBC URL编写方式为:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值,在这个例子中我连接的数据库主机是一台远程主机,所以主机名称为远程主机的ip地址,如果数据库主机为本机,则可以定义为localhost,在参数中指定用户名为root,密码也是root,为了避免中文乱码要指定useUnicode和characterEncoding。因为连接的是MySQL数据库,所以程序一开始需要加载MySQL的数据库驱动,然后通过DriverManager.getConnection(String URL)方法获取数据库的连接
5. 实现数据库的增删改查
先看查询操作,查询可以一次查询出所有的数据,也可以根据相应的条件查询。
查询所有的数据,在UserDao中定义一个queryAll()方法:
这里使用Connection.createStatement()方法获取一个Statement对象,这个对象里面有很多的方法可以操作数据库,使用excuteQuery(String sql)执行查询操作,查询结果为一个结果集ResultSet,可以通过这个结果集获取相关的信息。
定义main函数:
执行结果:
UserVO [id=4, userName=Mary, age=25, sex=0, createDt=2016-06-24]
UserVO [id=5, userName=Jack, age=22, sex=1, createDt=2016-06-24]
UserVO [id=6, userName=John, age=19, sex=1, createDt=2016-06-24]
根据条件查询,定义一个queryByParams方法:
return userList;}
这个方法可以自由选择查询的条件,只需要向方法中传入一个条件的List即可,这些条件都是由Map组成的,每一个Map包含三个元素,col表示查询条件对应哪一列,rel表示查询条件的关系是什么,value是指查询条件的值。这样写集成了多查询条件的方法,很多的业务下,查询的逻辑可能很多,这样写只用一个统一的方法就可以解决多种不同查询条件的业务逻辑。
再写一个简单的main函数测试一下:
在这个main方法中设定了两个查询条件,一是user_name like %John%,另一个是sex=1,当然条件也可以是其他的,执行程序运行结果为:
SELECT * FROM tbl_user_info WHERE 1=1 and user_name like '%John%' and sex = 1
UserVO [id=6, userName=John, age=19, sex=1, createDt=2016-06-24]
增加
现在在UserDao中写一个addUser方法用于新增一条信息:
这个方法使用Connection.prepareStatement(String sql)方法获取一个PreparedStatement对象,使用这个方法可以传入带参数的SQL语句,而参数的值可以通过PreparedStatement.setXXX(int index, XXX value)的方法指定,其中XXX为各种不同的类型,index指定第几个参数的下标。指定了参数的值之后,便可以执行excute()方法执行SQL语句了。
接下来写一个main方法来验证这个增加的方法:
执行后再查看数据库,发现Tom这个用户已经插入成功了。
删除
接下来再写一个删除的方法,根据用户的id来删除数据:
然后写一个main方法来验证:
结果:::::
更新数据库
从SQL语句中可以看出更新也是根据用户的id进行选择性的更新的。
写一个main方法来验证
结果
可以看到Mary的年龄确实变成了30,,删除成功。