Java JDBC 数据库链接小结随笔,
Java JDBC 数据库链接小结随笔
一、链接数据库的步骤
二、 关于Statement 和 PrepareStatement 两者区别 用法
三、关于 ResultSet 的一些小结
四、自定义工具类的封装
五、一些异常的解释
一、链接数据库的步骤
- 注册驱动
- 获得链接对象
- 创建sql容器
- 执行sql语句
- 查询操作
- 关闭资源:

1 package demo1;
2
3 import java.sql.*
;
4
5 public class demo1 {
6 public static void main(String[] args) {
7 try {
8 Class.forName("com.mysql.cj.jdbc.Driver"
);
9 String url="jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezone=UTC"
;
10 /*目前手动改变 sql 服务器 时区报错问题*/
11 String username="root"
;
12 String password="root"
;
13 /* com.mysql.cj.jdbc.Driver */
14
15 Connection con=
DriverManager.getConnection(url,username,password);
16 System.out.println(con);
17 Statement stmt =
con.createStatement();
18 ResultSet rs = stmt.executeQuery("select * from test"
);
19 while (rs.next()){
20 int id=rs.getInt("id"
);
21 String name=rs.getString(2
);
22 System.out.println("id:"+id+"-"+"name:"+
name);
23 }
24
25 }
26 catch (ClassNotFoundException e){
27 e.printStackTrace();
28 }
29 catch (SQLException e){
30 e.printStackTrace();
31 }
32 }
33 }
View Code
二、 关于Statement 和 PrepareStatement 两者区别 用法
PrepareStatement 继承自 Statement 接口 拥有Statement 中的方法
execute()
executeQuery()
executeUpdate()

1 package demo1;
2
3 import Util.connectionUtil;
4
5 import java.sql.*
;
6
7 public class TestDemo {
8 /*
9 * 1. prepareStatement Statement 区别
10 *
11 * 1)prepareStatement继承自 statement
12 * prepareStatement{ execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数}
13
14 * 2. 接口用法
15
16 * */
17
18 public static void main(String[] args) {
19
20 //直接使用 Util 包下自定义的 链接数据库方法
21 Connection con=connectionUtil.getConnections("jdbc"
);
22 Statement stmt=
null;
23 PreparedStatement ps=
null;
24
25 ResultSet resultSet=
null;
26 ResultSet rs=
null;
27
28 String selectSql="select * from test"
;
29 try {
30 stmt=
con.createStatement();
31 resultSet=
stmt.executeQuery(selectSql);
32
33
34 System.out.println("Statement 接口:"
);
35 while (resultSet.next()){
36 int id=resultSet.getInt("id"
);
37 String name=resultSet.getString("name"
);
38 System.out.println("id:"+id+"---"+"name:"+
name);
39 }
40
41
42 System.out.println("PrepareStatement 接口:"
);
43
44
45 /* PrepareStatement */
46 ps=
con.prepareStatement(selectSql);
47 rs=
ps.executeQuery();
48 while (rs.next()){
49 int id=rs.getInt("id"
);
50 String name=rs.getString("name"
);
51 System.out.println("id:"+id+"---"+"name:"+
name);
52 }
53
54
55 }
catch (SQLException e) {
56 e.printStackTrace();
57 }
58 finally {
59 if(con!=
null){
60 try {
61 con.close();
62 }
catch (SQLException e) {
63 e.printStackTrace();
64 }
65 }
66 }
67 }
68 }
View Code
基本能用PrepareStatement 就不用 Statement 尽量避开 ‘1’ or "1"="1" 1的情况
也会比 Statement 更灵活
execute() executeQuery() executeUpdate() 这三个方法也不需要用参数 直接调用
例:
PrepareStatement>
String sql="select * from test where id= ?";
PreparedStatement ps=con.prepareStatement(sql);
ps.setInt(1,1)
/* ? 相当于 占位符
setInt(index,value); 来给占位符设置值
set数据类型(index,value);
*/
----------------------------------------------------------
Statement>
stmt=con.createStatement();
resultSet=stmt.executeQuery(selectSql);
三、关于 ResultSet 的一些小结
ResultSet 结果集 接收一个二维的数组集
关于ResultSet 的一些方法
boolean next() 将光标从当前位置向前移一行。
String getString(int columnIndex) 获取此ResultSet对象的当前行中指定列的值
String getString(String columnLabel) 获取此ResultSet对象的当前行中指定列的值
四、自定义工具类的封装
五、一些异常的解释
上述内容为 自学笔记 可自行参考
用户点评