熟悉java.sql包

 

今天看了看jdbc,java.sql包和sqlserver2005的sqljdbc.jar,大体上明白了,jdbc是sun公司发布的一套数据库实现标准,只提供接口,不具体实现。具体的实现过程由各数据库开发厂商决定。各数据库开发厂商需要提供一个用于实现上述接口的.jar包。

这样做得好处是,如果有一天变更数据库(如从sqlserver转换成为oracle数据库),只需要更改java程序中的数据库驱动程序,和将sqljdbc.jar更改为oracle提供的.jar包就可以了。当然,如果使用了oracle不识别的函数,再改一下函数就就可以了。不用修正java代码。因为java代码中不使用具体的数据库开发厂商实现的类,而是使用java.sql中定义的接口。真是太方便了。

 

java.sql包中主要的类和接口包括:

1 Connection接口,定义为:public interface Connection

2 Driver接口,定义为:public interface Driver

3 DriverManager类,定义为:public class DriverManager

4 PreparedStatement接口,定义为:public interface PreparedStatement extends Statement

5 ResultSet接口,定义为:public interface ResultSet

6 SQLException类,定义为:public class SQLException extends java.lang.Exception

7 Statement接口,定义为:public interface Statement

 

我们一般使用jdbc的模式是:

1 加载数据库驱动程序

2 连接数据

3 执行SQL语句,并返回执行状态和查询结果

4 关闭数据库连接

 

转换为代码:

  1. import java.sql.*;
  2. public class TestDBConnection {
  3.     public static void main(String[] args) {
  4.         
  5.         try {
  6.             //定义一个连接
  7.             Connection con;
  8.             
  9.             //加载各数据库开发厂商实现的JDBC驱动程序
  10.             //mysql的场合:com.mysql.jdbc.Driver
  11.             Class.forName("com.mysql.jdbc.Driver");
  12.             
  13.             //连接数据库(各数据库开发厂商不同)
  14.             //以下两种写法都可以(对于mysql来说)
  15.            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","sa");
              //con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?user=root&password=sa");

  16.             //创建Statement对象或者PreparedStatement对象
  17.             //Statement:一般的Statement对象
  18.             //PreparedStatement:用于动态SQL的Statement对象
  19.             Statement st = con.createStatement();
  20.             
  21.             String sql = "select * from table1 order by id";
  22.             
  23.             //定义ResultSet对象
  24.             //执行SQL操作(查询,更新)
  25.             //executeQuery:查询
  26.             //executeUpdate:更新
  27.             //execute:一般不使用
  28.             ResultSet rs = st.executeQuery(sql);
  29.             
  30.             while (rs.next()) {
  31.                             
  32.                 //根据列索引取得数据
  33.                 System.out.println(rs.getString(1));
  34.                 //根据列名取得数据
  35.                 System.out.println(rs.getString("columnName"));
  36.             }
  37.             //关闭资源      
  38.             if (rs != null) rs.close();
  39.             if (st != null) st.close();
  40.             if (con != null) con.close();
  41.             
  42.         } catch (Exception e) {
  43.             e.printStackTrace();
  44.         } 
  45.     
  46.     }
  47. }
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值