使用JDBC数据库mysql5.5的增删查改
导入JDBC
- JDBC:Java Database Connection
- 创建directry,命令lib
- 复制jdbc到lib里
- 右键jdbc,
add as library
创建pacage,class
- src目录下创建package-- com
- com下创建类 Test
- 注意命名驼峰式
使用SQLyog桌面操作
- 建立数据库
user
- 创建表
userInfo
- 然后添加数据
JDBC进行mysql查询连接
JDBC连接数据库,并进行数据库查询
数据库操作七步走:
- 加载驱动
- 创建连接
- 写sql
- 得到statement对象执行sql
- 得到结果集
- 处理结果集
- 关闭资源
- 之后1-2将封装到util的getConnection()里
- 6将改成ArrayList,每一个数据存到实体类userinfo中
- 7封装到util的close()里
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
Connection connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8&user=root&password=123");
//这里的user对应的之前创建的数据库名
//user,password为数据库的账号和密码
System.out.println("创建连接成功!");
//3.写sql
String sql="select * from userinfo";
//4.得到statement对象执行sql
PreparedStatement statement=connection.prepareStatement(sql);
//5.得到结果集
ResultSet res= statement.executeQuery();
//6.处理结果集
while(res.next()){
System.out.println(res.getInt(1));
System.out.println(res.getString(2));
System.out.println(res.getString(3));
}
//7.关闭资源
res.close();
statement.close();
connection.close();
- 查看执行结果是否成功,如果有错,进行差错,可能是账号密码不对,mysql8和mysql5的jdbc连接url方式也不一样,以及数据库名、表名是否正确等
创建Util
但是如果我们要继续写插入、删除等操作时,又要重复写很多代码,所以我们建立了Util这个包,里面封装getConnection和close。
封装getConnection
public static Connection getConnection(){ //static 就不需要new了
Connection connection=null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
connection= 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 connection;
}
封装close
public static void close(ResultSet res, Statement statement,
Connection connection){
if (res!=null){
try {
res.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
创建bean
实体类和数据库对应
创建实体类
- 构造方法
- 属性
- get,set方法
- toString()
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 + '\'' +
'}';
}
}
创建dao
持久层,数据库的增删查改
public class UserInfoDao {
public ArrayList<UserInfo> findAll(){
ResultSet res=null;
PreparedStatement statement=null;
Connection connection=null;
List<UserInfo> list=new ArrayList<>(); //添加ArrayList存储每个数据
try {
// //1.加载驱动
// Class.forName("com.mysql.jdbc.Driver");
// //2.创建连接
// connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8&user=root&password=123");
// System.out.println("创建连接成功!");
connection= DBUtil.getConnection();
//3.写sql
String sql="select * from userinfo";
//4.得到statement对象执行sql
statement=connection.prepareStatement(sql);
//5.得到结果集
res= statement.executeQuery();
//6.处理结果集
while(res.next()){
UserInfo userInfo=new UserInfo();
userInfo.setId(res.getInt(1));
userInfo.setUsername(res.getString(2));
userInfo.setPassword(res.getString(3));
list.add(userInfo);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//7.关闭资源
DBUtil.close(res,statement,connection);
}
return (ArrayList<UserInfo>) list;
}
/*
* 添加数据
* */
public void add(){
Connection connection =null;
PreparedStatement statement=null;
try {
connection= DBUtil.getConnection();
String sql = "INSERT INTO userinfo (username,password) VALUES(?,?)";
statement=connection.prepareStatement(sql);
statement.setString(1,"xiaowang");
statement.setString(2,"123");
statement.executeUpdate();
System.out.println("添加成功");
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(null,statement,connection);
}
}
/*
* 更改数据
* */
public void update(){
Connection connection =null;
PreparedStatement statement=null;
try {
connection=DBUtil.getConnection();
String sql = "update userinfo set password='456' where id=3";
statement=connection.prepareStatement(sql);
statement.executeUpdate();
System.out.println("修改成功");
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(null,statement,connection);
}
}
/*
* 删除数据
* */
public void delete(){
Connection connection =null;
PreparedStatement statement=null;
try {
connection=DBUtil.getConnection();
String sql= "delete from userinfo where id=3";
statement=connection.prepareStatement(sql);
statement.executeUpdate();
System.out.println("删除成功");
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(null,statement,connection);
}
}
}
主函数
public class Test {
public static void main(String[] args) {
UserInfoDao userInfoDao=new UserInfoDao();
ArrayList<UserInfo> list=userInfoDao.findAll(); //查询数据库中的结果
System.out.println(list); //输出
userInfoDao.add(); //添加一条数据
ArrayList<UserInfo> list1=userInfoDao.findAll();//查看添加后的所有数据
System.out.println(list1);
}
}