day17 10.jdbc的crud操作
2024-09-28 08:51:14
每次都是注册驱动,获取连接,然后执行。每次都写很累,肯定能抽取出来一些东西。Java里面是这样的,相同的东西可以抽取做成一个方法。用的时候调这方法就OK了。这方法抽取到什么程度呢?
package cn.itcast.jdbc; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import org.junit.Test; import cn.itcast.utils.JdbcUtils; //jdbc的crud操作
public class JdbcDemo6 { @Test
public void findByIdTest(){
//1.定义sql
String sql = "select * from user where id= 1";
Connection con = null;
Statement st = null;
ResultSet rs = null; try { //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取连接
try {
con = DriverManager.getConnection("jdbc:mysql:///day17", "root", ""); //3.获取操作sql语句对象Statement
st = con.createStatement(); //4.执行sql
rs = st.executeQuery(sql); //5.遍历结果集
while(rs.next()){
int id = rs.getInt("id");
//String id = rs.getString("id");//虽然用getString()行,但是用getInt()比较合适
String username = rs.getString("username");
String password = rs.getString("password");
String email = rs.getString("email");
System.out.println(id+" "+username+" "+password+" "+email);
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//6.释放资源
try {
if(rs !=null ){
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(st!=null){
st.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(con!=null){
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//添加操作
@Test
public void addTest(){
//定义sql
String sql = "insert into user values(null,'张三','123','zs@163.com')";
Connection con = null;
Statement st = null;
ResultSet rs = null; try { //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取连接
try {
con = DriverManager.getConnection("jdbc:mysql:///day17", "root", ""); //3.获取操作sql语句对象Statement
st = con.createStatement(); //4.执行sql
int row = st.executeUpdate(sql);
System.out.println(row);
if(row!=0){
System.out.println("添加成功");
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//6.释放资源
try {
if(rs !=null ){
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(st!=null){
st.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(con!=null){
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} //update操作
@Test
public void updateTest(){
//将id=3的人的password修改为456
String password = "456";
String sql = "update user set password='"+password+"' where id=3"; //1.得到Connection
Connection con = null;
Statement st = null;
try {
con = JdbcUtils.getConnectin(); //3.获取操作sql语句对象Statement
st = con.createStatement(); //4.执行sql
int row = st.executeUpdate(sql);
System.out.println(row);
if(row!=0){
System.out.println("添加成功");
} } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭资源
try {
if(st!=null){
st.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(con!=null){
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
}
package cn.itcast.utils; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; public class JdbcUtils { public static Connection getConnectin() throws ClassNotFoundException, SQLException{ Class.forName("com.mysql.jdbc.Driver");//在开发中用哪个Statement人家有选择的权利,你不能给它抽取 //2.获取连接
Connection con = DriverManager.getConnection("jdbc:mysql:///day17", "root", "");
return con;
}
}
最新文章
- jQuery.ajax()调用asp.net后台方法
- c++截取英文和汉字(单双字节)混合字符串
- Solve error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'
- PS4破解
- ";Unable to get image data from canvas because the canvas has been tainted by cross-origin data";问题产生原因及解决办法
- udp协议基础(转自疯狂java讲义)
- 高质量程序设计指南C/C++语言——C++/C程序设计入门
- sqlserver生成随机数 2011-12-21 15:47 QQ空间
- pycharm远程调试服务器
- [Swift]LeetCode731. 我的日程安排表 II | My Calendar II
- python测试开发django-2.templates模板与html页
- 《梦断代码》Scott Rosenberg著(一)
- Django model进阶
- let申明与const申明
- [Beego模型] 四、使用SQL语句进行查询
- ArcGIS模型构建器案例教程-批量复制工作空间所有要素类
- Manjaro Linux 没有声音
- LVS NAT/DR
- Python学习笔记(四十一)— 内置模块(10)urllib
- xshell 映射带跳板机服务器的端口到本地