JDBC编程

来源:互联网 发布:c语言与单片机 编辑:程序博客网 时间:2024/05/10 14:24
Sun公司为SQL访问提供一套纯java API,同时提供一个驱动管理器,以允许第三方驱动程序可以连接到特定的数据库。还需要一套简单的机制,以使得第三方驱动程序可以向驱动管理器注册。
Sun公司制定了两套接口。应用程序开发者使用JDBC API,数据库提供商和工具开发商使用JDBC 驱动API。

JDBC驱动程序类型:
第一类驱动程序将JDBC翻译成ODBC,然后使用一个ODBC驱动程序与数据库通讯。--JDBC/ODBC桥连接
第二类驱动程序是由部分java程序和部分本地代码组成,用于与数据库的客户端API进行通讯。--本地api
第三类驱动程序是纯java客户端类库。它使用一种与具体数据库无关的协议将数据库请求发送给服务器构件,然后该构件再将数据库               请求翻译成特定的数据库协议。--网络协议纯java驱动程序
第四类驱动程序是纯java类库,它将JDBC请求直接翻译成特定的数据库协议。--本地协议纯java驱动程序


 JDBC配置
第一种情况:使用JDBC-ODBC桥连接
1.配置数据源:  开始-控制面板-管理工具-数据源-用户DNS-添加-Sql Server-数据源的命名,服务器名称-用户登录-数据库
2.在程序中连接数据源
  a.加载驱动: Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");
  b.得到连接: Connection  ct=DriverManager.getConnection("jdbc:odbc:数据源","用户名","密码");
  c.创建Statement和PreparedStatement    Statement   sm=ct.createStatement();
  d.执行sql语句    inti=statement.excuteUpdate("insert/update/delete....");
                   ResultSet  rs=statement.excuteQuery("select ...");
  e.关闭资源:   rs,sm,ct
第二种情况:使用JDBC纯连接 
1.引入三个jar包:工程(右键)-properties--Java Build Path--Libraries--Add External JARs--OK
2.在程序中连接数据源
  a.加载驱动:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
  b.得到连接:ct=DriverManager.getConnection(
                     "jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=数据库名","用户名","密码");
  c.创建Statement和PreparedStatement    Statement   sm=ct.createStatement();
  d.执行sql语句    inti=statement.excuteUpdate("insert/update/delete....");
                   ResultSet  rs=statement.excuteQuery("select ...");
  e.关闭资源:   rs,sm,ct

分析excuteUpdate和excuteQuery
 1.excuteUpdate返回受SQL命令影响的行数,对于不返回行数的语句返回0.insert,update,delete,createtable ,drop table     2.excuteQuery返回一个结果集ResultSet对象。结果集中行的顺序是任意的。


讨论结果集:ResultSet
1.ResultSet类,迭代器初始化时被设定在第一行之前的位置,必须调用next方法将它移动到第一行,其次,它没有hasNext方法
2.一个结果集代表的是查询出来的一行,结果集中提供了访问器来获取每一行中各列的信息。
  getString(1);  当参数是数字时,该数字参数表示所对应的列
  getDouble("price"); 当参数是字符串时,表示以该字符串为列名的列
  while(rs.next){String s=rs.getString(1);      double d=rs.getDouble("price"); }
3.一个statement最多能打开一个结果集


分析Statement和PreparedStatement
1. Statement   sm=ct.createStatement();    sm.excuteUpdate(sql); 
2. PreparedStatement  ps=ct.preparedStatement(sql);  ps.excuteUpdate();  ps.setString(1,"df");
0 0
原创粉丝点击