IDEA连接mySQL数据库,实现增、删、改、查操作
摘要:本文介绍了JDBC操作数据库的标准7个步骤:加载驱动、获取连接、编写SQL、创建执行对象、执行SQL、处理结果和关闭资源。以查询"person"表中性别为"男"的记录为例,详细演示了PreparedStatement参数化查询的实现过程。文章还提供了通用的数据库工具类DBHelper,包含获取连接、增删改查等方法,其中查询方法通过反射机制将结果集映射到
·
目录
每个操作都是以下这七个步骤:
- 手动加载数据库驱动类
- 获得连接对象
- 编写sql语句
- 获得执行对象
- 执行sql语句,同时获得结果
- 处理结果
- 关闭连接资源(先开的后关)
eg:学生管理系统中的查询操作:
数据库
建表:把序号设为主键(主键是默认非空的),自动递增。

添加数据

IDEA
查询:读取数据库中所有性别为 '男' 的数据
1.手动加载数据库驱动类
//1.手动加载数据库驱动类:
Class.forName("com.mysql.cj.jdbc.Driver"); //把驱动类Driver加载到虚拟机
2.获得连接对象
127.0.0.1是 IP 地址(本机回环地址),3306是端口号,jdbc1是数据库的名字
//2.获得连接对象:
String url = "jdbc:mysql://127.0.0.1:3306/jdbc1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password); //驱动类管理器
3.编写sql语句
//3.编写sql语句
String sql = "select * from person where sex=?";
4.获得执行对象
//4.获得执行对象
PreparedStatement ps = con.prepareStatement(sql);
System.out.println("请输入要查询的数据的性别:");
String sex = new Scanner(System.in).next();
ps.setString(1, sex);//给sql语句里第一个?赋值
5.执行sql语句,同时获得结果
//5.执行sql语句,同时获得结果:
ResultSet rs = ps.executeQuery();//结果集对象
6.处理结果
//6.处理结果:
System.out.println("序号\t姓名\t\t年龄\t性别");
while (rs.next()) {
System.out.println(rs.getInt(1) + "\t"
+ rs.getString(3) + "\t"
+ rs.getInt(5) + "\t"
+ rs.getString(4));
}
7.关闭连接资源
//7.关闭连接资源(后开的先关)
rs.close();
ps.close();
con.close();
通用方法
添加数据库驱动类,获得数据库连接对象
这里的jdbc1是数据库的名字,数据库名字叫什么就些什么
public Connection getCon() {
Connection con = null;
try {
//1.手动添加数据库驱动类
Class.forName("com.mysql.cj.jdbc.Driver");//把驱动类Driver加载到虚拟机
//2.获得数据库连接对象:
String url = "jdbc:mysql://127.0.0.1:3306/jdbc1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
String username = "root";
String password = "root";
con = DriverManager.getConnection(url, username, password);//驱动类管理器
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
增、删、改的通用方法
//增,删,改 的通用方法
public int dtUpdate(String sql,Object...obj){//3.编写sql语句
Connection con = getCon();//1,2步
PreparedStatement ps=null;
int count = 0;
try {
ps = con.prepareStatement(sql);//4.获得执行对象
for (int i = 0; i < obj.length; i++) {
ps.setObject(i + 1, obj[i]);
}
count = ps.executeUpdate();//5.执行sql语句 6.返回,谁调谁处理
} catch (SQLException e) {
e.printStackTrace();
}finally {
closeAll(con, ps, null);//7.关闭资源
}
return count;
}
通用的查询方法
//通用的查询方法
public ArrayList dtQuery(String sql,Class cla, Object...obj){
ArrayList list = new ArrayList();
Connection con = getCon();
PreparedStatement ps =null;
ResultSet rs = null;
try {
ps = con.prepareStatement(sql);
for (int i = 0; i < obj.length; i++) {
ps.setObject(i + 1, obj[i]);
}
rs = ps.executeQuery();
while (rs.next()) {
Object o = cla.newInstance();
Field[] fields = cla.getDeclaredFields();
for (Field f : fields) {
f.setAccessible(true);
f.set(o, rs.getObject(f.getName()));
}
list.add(o);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}finally {
closeAll(con,ps,rs);
}
return list;
}
--->合起来就是数据库工具类DBHelper,通过反射实现增删改查的操作
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)