准备工作
mysql一般要导入jar包,步骤为:
右键项目名-> Build Path-> Add External Archives->选择jar包
加载驱动、连接数据库都是固定的代码:
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
Connection con;
Statement statement;
try {
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//连接数据库,ip地址、端口、表名、用户权限、密码
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "123456");
statement = con.createStatement();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
常用操作(statement)
查询
普通查询
//rs保存查询到的符合条件的记录
ResultSet rs = statement.executeQuery("select * from userinfo");
//获取记录中的具体信息用get函数,参数可以是列号也可以是列名
while (rs.next()) {
System.out.println(rs.getString(1));
System.out.println(rs.getString("username"));
}
条件查询
//比较查询
ResultSet rs = statement.executeQuery("select * from userinfo where username = '张三' and id>=1");
//格式查询,%表示一个或零个字符 _表示一个字符
ResultSet rs = statement.executeQuery("select * from userinfo where username like '张%' or username like '_四'");
更新、添加与删除操作
statement 对象调用 executeUpdate(String sql) 或 execute(String sql) 方法
//更新:
//update 表 set 字段 = 新值 where <条件子句>
statement.executeLargeUpdate("update userinfo set username = '张新' where username = '张三'");
//添加:
//insert into 表(字段列表) values (对应的记录值)
//insert into 表 values (对应的记录值)
statement.execute("insert into userinfo values(1,'张三','开发部','经理')");
//删除:
//delete from 表名 where <条件子句>
statement.execute("delete from userinfo where username = '张三'");
PreparedStatement类的使用
PreparedStatement类将语句进行了预处理,设置一次语句,然后进行批量操作,省去了重复解析sql语句的工作。
在PreparedStatement调用excute方法前,需要设置通配符的值。通配符其实可以看做是SQL语句的参数,可以用?来代替字段的值。
以一个批量插入的操作为例子:
// 批量插入
PreparedStatement ps = con.prepareStatement("insert into userinfo values (?, ?, ?, ?)");
for (int i = 0; i < 100; i++) {
ps.setInt(1, i);
ps.setString(2, "info1");
ps.setString(3, "info2");
ps.setString(4, "info3");
ps.executeUpdate();
}
// 批量查询操作
ps = con.prepareStatement("select * from userinfo where id = ?");
for (int i = 0; i < 100; i++) {
ps.setInt(1, i);
ResultSet rs = ps.executeQuery();
if (rs.next())
System.out.println(
rs.getString(1) + '\t' + rs.getString(2) + '\t' + rs.getString(3) + '\t' + rs.getString(4));
}
// 批量删除操作
ps = con.prepareStatement("delete from userinfo where id = ?");
for (int i = 0; i < 100; i++) {
ps.setInt(1, i);
ps.executeUpdate();
}