JDBC学习笔记2

上一次的笔记中已经初步提到了,JDBC连接数据库的基本六个步骤。
下面就简单的分析一下JDBC的这六个步骤:
1.获取连接Connection对象分析
      a.获取数据库的三大要素
            |-- URL:不同的数据库系统的URL不相同,但是至少有如下的内容:
                            主协议:次协议:HOST(主机):PORT(端口):SID(库名)
            |-- USER:用户名
            |-- PASSWORD:密码
      b.DriverManager获取连接的原理:

 1//驱动管理器类
 2class DriverManager{
 3  static Vector<Driver> drivers = new Vector<Driver>();
 4  public static void registerDriver(Driver d){
 5    driver.add(d);
 6  }

 7/**获取连接的方法*/
 8  public static Connection getConnection(String url,String user,String pwd) throws SQLException{
 9    Properties info = new Properties();
10    info.setProperty("user",user);
11    info.setProperty("password",pwd);
12    return getConnection(url,info);
13  }

14  public static Connection getConnection(String url,Properties info)throws SQLException{
15/*迭代多由的驱动,并且一次与给定的URL进行匹配,如果成功则返回当前驱动的Connection对象*/
16    Iterator<Driver> iter = drivers.iterator();
17    while(iter.hasNext()){
18      Driver d = iter.next();
19      if(匹配(url,d)){
20        return d.connect(url,info);
21      }
else{
22        continue;
23      }

24    }

25/*到此都没有返回,说明没有匹配成功,则抛出SQLException异常*/
26    throw new SQLException("no suitable driver");
27  }

28}
2. Statement 调用静态SQL
    PreparedStatement 来执行动态SQL,可以为SQL动态绑定参数。
    如:同构SQL,SQL内容一样参数不同。
 1select id,first_name from s_emp
 2where dept_id = ? and name like ?;
 3
 4insert into t_user values(?,?,?,?);
 5-- 上面的这些情况就可以用setXXX的方法(绑定参数)来传参数。
 6-- 例:
 7Connection con = ConnectionFactory.getConnection();
 8String sql = "XXXXXXXXXXXXXXXXXXXXXXXXXX";
 9PreparedStatement pstm = con.PreparedStatement(sql);
10//绑定参数
11pstm.setInt(1,XXX);
12pstm.setString(2,XXX);
13. . . 
3.CallableStatement用来调用存储过程[procedure]
1String sql = "{call insert_user(?,?)}"
2CallableStatement cstm = con.prepareCall(sql);
3//绑定参数
4cstm.setString(1,"user");
5cstm.setString(2,"password");
6//执行过程,此返回值表示受影响的记录条数
7int res = cstm.executeUpdate();
8
4.执行SQL
 1statement:
 2  
 3  executeQuery(selectSQL);   =>  ResultSet
 4  executeUpdate(dmlSQL);     =>  int
 5  execute(arbiSQL);          =>  boolean
 6  
 7  if(stm.execute(sql)){
 8    //为真,表示执行select语句
 9    ResultSet rs = stm.getResultSet();
10  }
else{
11    //为假,表示执行非select语句
12    int res = stm.getUpdateCount();
13  }
5.处理结果集
1ResultSet rs:
2    rs.next();   =>  boolean用于判断结果集中是否还有可读取的元素。
3     rs.getXXX();  get系列方法,用于读去结果集中的元素。
6.释放资源
1Connection.close();
2Statement.close();
3ResultSet.close();


My Java study notes.

posted on 2008-09-27 00:59 mailguest 阅读(221) 评论(0)  编辑  收藏 所属分类: JDBC


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

~~~~~~JAVA学习笔记~~~~~~

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜