jdbc连接数据库六步走

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaojie119120/article/details/73123759

这几天正好在学oracle数据库,而且我发现我已经忘了jdbc连接数据库的步骤了,所以写篇博客记录一下。这里使用Oracle数据库驱动,MySQL类似。

jdbc连接数据库六步:

  1. 加载驱动
  2. 获取数据库连接
  3. 创建statement
  4. 执行SQL语句
  5. 获取结果集
  6. 释放资源(关闭statement和连接)
    贴上代码:
//1、加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2、获取数据库连接
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String user = "xiaojie119120";
String password = "xiaojie119120";
Connection conn = DriverManager.getConnection(url,user,password);
//3、创建statement
Statement st = conn.createStatement();
//4、执行SQL语句
String sql = "select * from db_test";
ResultSet rs = st.executeQuery(sql);
//5、获取结果集
List<User> users = new ArrayList<User>();
User u = null;
while (rs.next()){
    u = new User();
    u.setId(rs.getInt("id"));
    u.setInfo(rs.getString("info"));
    users.add(u);
}
System.out.println(users);
//6、释放资源(关闭statement和连接)
st.close();
conn.close();

以上是使用Statement执行SQL语句,Statement传递参数是靠拼接字符串的,这会导致sql注入,所以最好采用PreparedStatement,代码如下:

//1、加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2、获取数据库连接
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String user = "xiaojie119120";
String password = "xiaojie119120";
Connection conn = DriverManager.getConnection(url,user,password);
//3、创建statement
String sql = "select * from db_test where id=?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, "1");
//4、执行SQL语句
ResultSet rs = pst.executeQuery();
//5、获取结果集
List<User> users = new ArrayList<User>();
User u = null;
while (rs.next()){
    u = new User();
    u.setId(rs.getInt("id"));
    u.setInfo(rs.getString("info"));
    users.add(u);
}
System.out.println(users);
//6、释放资源(关闭statement和连接)
pst.close();
conn.close();

两者区别如下:
1>PreparedStatement用于处理动态SQL语句,在执行前会有一个预编译过程,这个过程是有时间开销的,虽然相对数据库的操作,该时间开销可以忽略不计,但是PreparedStatement的预编译结果会被缓存,下次执行相同的预编译语句时,就不需要编译,只要将参数直接传入编译过的语句执行代码中就会得到执行,所以,对于批量处理可以大大提高效率。

2>Statement每次都会执行SQL语句,相关数据库都要执行SQL语句的编译。

作为开发者,应该尽可能以PreparedStatement代替Statement,其原因如下:
(1)可以提高代码的可读性和可维护性。;
(2)PreparedStatement能够尽最大可能提高性能。
(3)PreparedStatement极大的提高了安全性(防止SQL注入)。

猜你喜欢

转载自blog.csdn.net/xiaojie119120/article/details/73123759
今日推荐