JDBC操作MySQL数据库,实现最基本的增删改查操作

JDBC连接MySql的几个主要步骤:

1. 导入外部驱动包

mysql-connector-java-8.0.18.jar

2. 加载驱动

Class.forName("com.mysql.cj.jdbc.Driver"); 

3. 获取数据库连接对象(Connection)

//数据库连接信息
//(报时区错误的解决办法:url + ”&serverTimezone=GMT%2B8”)

String url = "jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8";
String user = "root";
String password = "1";
Connection connection = DriverManager.getConnection(url,user,password);

url :
localhost(代表本机ip,如连接其他电脑上的数据库,请改变ip)
3306(数据库端口号)
test(数据库名)
UTF-8(编码格式)

4. 创建SQL语句操作对象(PreparedStatement)

String sql = "select * from student";
PreparedStatement ps = connection.prepareStatement(sql);

PreparedStatement是Statement的子接口

PreparedStatement的优点:

  1. 效率高
    使用PreparedStatement执行SQL命令时,命令会被数据库编译和解析,并放到命令缓冲区.以后每当执行同一个 PreparedStatement对象时,预编译的命令就可以重复使用
  2. 代码可读性和可维护性好
  3. 安全性好
    使用PreparedStatement可以防止SQL注入

5. 执行查询语句并获取结果集(ResultSet)

ResultSet rs = ps.executeQuery();
//遍历结果集
while (rs.next()) {
	System.out.println(rs.getInt(1) + rs.getString(2) + rs.getInt(3));
}

除了查询语句是executeQuery();其他全部是executeUpdate();

Statement接口下的方法:
boolean execute(String sql) : 执行SQL语句,如果返回值是结果集则为true,否则为false
ResultSet executeQuery(String sql) : 执行SQL语句,返回值为ResultSet
int executeUpdate(String sql) : 执行SQL语句,返回值为所影响的行数

6. 关闭连接

connection.close();
ps.close();
rs.close();

增删改核心代码:

//增加记录

String sql_2 = "insert into student(id,name,age) values(?,?,?)";
PreparedStatement ps_2 = connection.prepareStatement(sql_2);
ps_2.setInt(1, 3);
ps_2.setString(2, "王五");
ps_2.setInt(3,22);

//更新数据库,返回受影响行数

int row_2 = ps_2.executeUpdate();
System.out.println("受影响的行数:"+ row_2);
//删除记录

String sql_3="delete from student where id=1";
PreparedStatement ps_3 = connection.prepareStatement(sql_3);

//更新数据库,返回受影响行数

int row_3 = ps_3.executeUpdate(sql_3);
System.out.println("受影响的行数:"+ row_3);
 //修改记录
 
String sql_4 = "update student set age = ? where name = ?";
PreparedStatement ps_4 = connection.prepareStatement(sql_4);
ps_4.setInt(1,20);
ps_4.setString(2,"张三");

//更新数据库,返回受影响行数

int row_4 = ps_4.executeUpdate();
System.out.println("受影响的行数:"+ row_4);
原文地址:https://www.cnblogs.com/gkgkgk/p/13522472.html