JDBC的使用
开发环境与开发工具
jdk1.8
idea
mysql5.5
mysql-connector-java-5.1.36.jar
创建测试数据
可以使用代码操作或者SQLyog操作
首先创建数据库user
CREATE DATABASE `user` ;
添加数据表userinfo
CREATE TABLE `userinfo` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
添加测试数据
insert into `userinfo`(`id`,`username`,`password`) values
(6,'user1','123'),
(7,'user2','123');
连接数据库示例
数据库查询分为以下几步:
步骤一、加载驱动
步骤二、创建连接
步骤三、写sql语句
步骤四、得到statement对象执行sql
步骤五、得到结果集
步骤六、处理结果集
步骤七、关闭资源
1. 新建Java项目
目录结构如下图所示
包名 | 类型 | 功能 |
---|---|---|
util | 工具 | |
bean | 实体类 | 和数据库对应 |
dao | 持久层 | 数据库的增删改查 |
2.编写实体类UserInfo.java
实体类包含以下几个部分:
1.构造方法
2.属性
3.getset
4.tostring
本处所举例子中包含三个属性,id,username,password,分别对应数据表中字段。
在idea中可自动生成构造方法,getset方法以及toString方法
package com.zhongruan.bean;
public class UserInfo {
private int id;//
private String username;//名称
private String password;//密码
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
3.编写DBUtil.java
getConnection方法用于连接数据库,对应JDBC连接数据库步骤一,二
close方法用于关闭数据库连接,对应JDBC连接数据库步骤七
将这几个步骤单独封装起来,可以减少增删查改时编写的代码。
package com.zhongruan.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBUtil {
public static Connection getConnection() {
Connection con=null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
con = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/user?" +
"useSSL=true&characterEncoding=utf-8" +
"&user=root&password=123");
System.out.println("数据库连接成功");
}catch (Exception e)
{
e.printStackTrace();
}
return con;
}
public static void close(ResultSet rs, Statement statement,Connection con){
if(rs!=null){
try {
rs.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
4.编写UserInfoDao.java
package com.zhongruan.dao;
import com.zhongruan.bean.UserInfo;
import com.zhongruan.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class UserInfoDao {
//查询所有用户信息
public List<UserInfo> findall() {
ResultSet rs = null;
PreparedStatement statement = null;
Connection con = null;
List<UserInfo> list = new ArrayList<>();
try {
//使用DBUtil连接数据库
con = DBUtil.getConnection();
//3.写sql
String sql = "select * from userinfo";
//4.得到statement对象执行sql
statement = con.prepareStatement(sql);
//5.得到结果集
rs = statement.executeQuery();
//6.处理结果集
while (rs.next()) {
UserInfo userInfo = new UserInfo();
userInfo.setId(rs.getInt(1));
userInfo.setUsername(rs.getString(2));
userInfo.setPassword(rs.getString(3));
list.add(userInfo);
}
} catch (Exception e) {
System.out.println(e);
} finally {
//关闭资源
DBUtil.close(rs, statement, con);
}
return list;
}
//添加用户信息
public void add() {
PreparedStatement statement = null;
Connection con = null;
try {
//使用DBUtil连接数据库
con = DBUtil.getConnection();
//3.写sql
String sql = "insert into userinfo (username,password) values(?,?)";
//4.得到statement对象执行sql
statement = con.prepareStatement(sql);
statement.setString(1, "suancai");
statement.setString(2, "jianglaoshi");
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭资源
DBUtil.close(null, statement, con);
}
}
//删除用户信息
public void delete(){
PreparedStatement statement = null;
Connection con = null;
try {
//使用DBUtil连接数据库
con = DBUtil.getConnection();
//3.写sql
String sql = "delete from userinfo where username=?";
//4.得到statement对象执行sql
statement = con.prepareStatement(sql);
statement.setString(1, "suancai");
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭资源
DBUtil.close(null, statement, con);
}
}
//修改用户信息
public void update(){
PreparedStatement statement = null;
Connection con = null;
try {
//使用DBUtil连接数据库
con = DBUtil.getConnection();
//3.写sql
String sql = "update userinfo set password=? where id=?";
//4.得到statement对象执行sql
statement = con.prepareStatement(sql);
statement.setString(1, "456");
statement.setString(2, "6");
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭资源
DBUtil.close(null, statement, con);
}
}
}
5.编写测试类Test.java
测试findall方法
package com.zhongruan;
import com.zhongruan.bean.UserInfo;
import com.zhongruan.dao.UserInfoDao;
import java.util.List;
public class Test {
public static void main(String[] args) {
UserInfoDao userInfoDao = new UserInfoDao();
//调用findall方法,显示所有数据
List<UserInfo> list= userInfoDao.findall();
System.out.println(list);
}
}
运行结果:
测试add方法
package com.zhongruan;
import com.zhongruan.bean.UserInfo;
import com.zhongruan.dao.UserInfoDao;
import java.util.List;
public class Test {
public static void main(String[] args) {
UserInfoDao userInfoDao = new UserInfoDao();
userInfoDao.add();//调用add方法
List<UserInfo> list= userInfoDao.findall();
System.out.println(list);
}
}
运行结果:
测试delete方法
package com.zhongruan;
import com.zhongruan.bean.UserInfo;
import com.zhongruan.dao.UserInfoDao;
import java.util.List;
public class Test {
public static void main(String[] args) {
UserInfoDao userInfoDao = new UserInfoDao();
userInfoDao.delete();//调用delete
List<UserInfo> list= userInfoDao.findall();
System.out.println(list);
}
}
运行结果
测试update方法
package com.zhongruan;
import com.zhongruan.bean.UserInfo;
import com.zhongruan.dao.UserInfoDao;
import java.util.List;
public class Test {
public static void main(String[] args) {
UserInfoDao userInfoDao = new UserInfoDao();
userInfoDao.update();//调用update
List<UserInfo> list= userInfoDao.findall();
System.out.println(list);
}
}
运行结果