JDBC的插入,删除,更新数据的方式类似,只需修改一下sql语句
@Test
public void testJDBC2() throws SQLException, ClassNotFoundException {
/**
- JDBC 实现的步骤
- JDBC 完成 记录的插⼊
- 1.注册驱动
- 2.获得连接
- 3.获得执⾏sql语句的对象
- 4.执⾏sql语句, 并返回结果
- 5.处理结果
- 6.释放资源
- 注意: 若插⼊中⽂出现乱码, 请设置编码
?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
/
@Test
public void testJDBC2() throws SQLException, ClassNotFoundException {
/* - JDBC 完成 记录的插⼊
- 1.注册驱动
- 2.获得连接
- 3.获得执⾏sql语句的对象
- 4.执⾏sql语句, 并返回结果
- 5.处理结果
- 6.释放资源
- 注意: 若插⼊中⽂出现乱码, 请设置编码
?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
/
Class.forName(“com.mysql.jdbc.Driver”);
String url = “jdbc:mysql://localhost:3306/mydb?
useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai”;
Connection conn = DriverManager.getConnection(url, “root”,
“root”);
Statement stat = conn.createStatement();
String sql = “insert into category(cname) values(‘测试’)”;
int result = stat.executeUpdate(sql);
System.out.println("result = " + result);
stat.close();
conn.close();
}
更新数据:String sql = “update category set cname=‘测试2’ where cid=4”;
删除数据:String sql = “delete from category where cid=4”;
查询:查询不一样的地方
String sql = “select * from category where cid = 3”;
ResultSet rs = stat.executeQuery(sql);
(遍历可以采用while循环的方式)
if (rs.next()) {
int cid = rs.getInt(“cid”);
String cname = rs.getString(“cname”);
System.out.println("cid = " + cid + ",cname = " +cname);
} else {
System.out.println(“数据没有查到”);
}
rs.close();
优化的工具类的方式
先编写一个jdbc.properties配置⽂件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb?
useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
jdbc.user=root
jdbc.password=root
(名称可以自己随便起)
编写工具类
public class JDBCUtils {
private static String driver;
private static String url;
private static String user;
private static String password;
static {
try {
//使⽤类加载器, 读取配置⽂件
InputStream is =
JDBCUtils2.class.getClassLoader().getResourceAsStream(“jdbc.properties”);
Properties prop = new Properties();
prop.load(is);
driver = prop.getProperty(“jdbc.driver”);
url = prop.getProperty(“jdbc.url”);
user = prop.getProperty(“jdbc.user”);
password = prop.getProperty(“jdbc.password”);
//注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/* - 返回连接对象 Connection
/
public static Connection getConnection() throws SQLException {
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
/* - 释放资源
/
public static void close(ResultSet rs, Statement stat, Connection
conn) throws SQLException {
if (rs != null) {
rs.close();
}
if (stat != null) {
stat.close();
}
//看Connection来⾃哪⾥, 如果Connection是从连接池⾥⾯获得的, close()⽅法其
实是归还; 如果Connection是创建的, 就是销毁
if (conn != null) {
conn.close();
}
}
}
使用工具类实现查询
@Test
public void testJDBC6() throws SQLException {
/* - 使⽤JDBC⼯具类, 完成查询所有分类
- 1.通过JDBC⼯具类, 获得连接
- 2.获得执⾏sql语句的对象
- 3.执⾏sql语句, 并返回结果
- 4.处理结果
- 5.释放资源
*/
Connection conn = JDBCUtils.getConnection();
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(“select * from category”);
while (rs.next()) {
int cid = rs.getInt(“cid”);
String cname = rs.getString(“cname”);
System.out.println("cid = " + cid + ",cname = " + cname);
}
JDBCUtils.close(rs, stat, conn);
}
增加,删除,修改的方法与上面的原始jdbc类似,
int result= stat.executeUpdate(sql语句);
增加的语句:insert into 表名(键)values (值)
修改的语句:update 表名 set 值 where 条件:
删除的语句:delete from 表名 where 条件
更新数据:String sql = “update category set cname=‘测试2’ where cid=4”;
删除数据:String sql = “delete from category where cid=4”;
PreparedStatement(实际主要使用这种方式)
不同之处在于使用占位符?给定格式,再赋值
String sql = “select * from users where username=? and
password=?”;
** - PreparedStatement pstat = conn.prepareStatement(sql);
**
pstat.setString(1,“admin”);
pstat.setString(2,“1234”);
其余内容与一样
//查询操作
@Test
public void jdbcTest() throws SQLException {
//1.通过⼯具类 获取 Connection对象
Connection conn = JDBCUtils.getConnection();
//2.创建 ⽤于执⾏sql语句的对象 PreparedStatement , 同时指定sql语句
String sql = “select * from users where username=? and
password=?”;
PreparedStatement pstat = conn.prepareStatement(sql);
//3.为sql语句中的 每个? 号 赋值
pstat.setString(1,“admin”);
pstat.setString(2,“1234”);
//4.执⾏sql语句
ResultSet rs = pstat.executeQuery();
//5.处理 执⾏sql语句后的 结果
while(rs.next()){
int uid = rs.getInt(“uid”);
String username = rs.getString(“username”);
String password = rs.getString(“password”);
System.out.println(uid + "== " + username + " === " +
password);
}
//6.释放资源
JDBCUtils.close(rs, pstat, conn);
}