jdbc连接数据库

jdbc核心api

 java.sql.*   和  javax.sql.*

 

 |- Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。

       |- connect(url, properties):  连接数据库的方法。

     url: 连接数据库的URL

    URL语法: jdbc协议:数据库子协议://主机:端口/数据库

    user: 数据库的用户名

    password: 数据库用户密码

      |- DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序

           |-registerDriver(driver)  : 注册驱动类对象

           |-Connection getConnection(url,user,password);  获取连接对象

 

      |- Connection接口: 表示java程序和数据库的连接对象。

           |- Statement createStatement() : 创建Statement对象

           |- PreparedStatement prepareStatement(String sql)  创建PreparedStatement对象

           |- CallableStatement prepareCall(String sql) 创建CallableStatement对象

 

   |- Statement接口: 用于执行静态的sql语句

         |- int executeUpdate(String sql)  : 执行静态的更新sql语句(DDL,DML)

         |- ResultSet executeQuery(String sql)  :执行的静态的查询sql语句(DQL)

 

      |-PreparedStatement接口:用于执行预编译sql语句

                |- int executeUpdate() : 执行预编译的更新sql语句(DDL,DML)

                |-ResultSet executeQuery()  : 执行预编译的查询sql语句(DQL)

 

     |-CallableStatement接口:用于执行存储过程的sql语句(call xxx)

               |-ResultSet executeQuery()  : 调用存储过程的方法

 

   |- ResultSet接口:用于封装查询出来的数据

        |- boolean next() : 将光标移动到下一行

        |-getXX() : 获取列的值

 

 

 

1.加载jdbc的驱动程序,创建数据库得连接有,多种方法

其中推荐实用下面的加载方法

 1 //注册方法
 2 Class.forName("com.mysql.jdbc.Driver");
 3 Class.forName("com.mysql.jdbc.Driver").newInstance();
 4 //连接到数据库得方法
 5         Connection conn =DriverManager.getConnection(url, user, password);
 6     Connection conn = DriverManager.getConnection(url);(这弓写法的user和password以参数的形式跟在url后面,如:url = "jdbc:mysql://localhost:3306/day17?user=root&password=root";)
 7 //各种数据库的driverClass 和url   
 8
10 oracle
11     driverClass:oracle.jdbc.driver.OracleDriver
12     url:jdbc:oracle:thin:@127.0.0.1:1521:dbname
13 mysql
14     driverClass:com.mysql.jdbc.Driver
15 
16     PS:有的时候,mysql的驱动类也也会看到使用org.gjt.mm.mysql.Driver的情况,org.gjt.mm.mysql.Driver是早期的驱动名称,后来就改名为com.mysql.jdbc.Driver,现在一般都推荐使用 com.mysql.jdbc.Driver。在最新版本的mysql jdbc驱动中,为了保持对老版本的兼容,仍然保留了org.gjt.mm.mysql.Driver,但是实际上 org.gjt.mm.mysql.Driver中调用了com.mysql.jdbc.Driver,因此现在这两个驱动没有什么区别。
17     url:jdbc:mysql://localhost:3306/mydbname
18 DB2
19     driverClass:com.ibm.db2.jcc.DB2Driver
20     url:jdbc:db2://127.0.0.1:50000/dbname
21 sybase
22     driverClass:com.sybase.jdbc.SybDriver
23     url:jdbc:sybase:Tds:localhost:5007/dbname
24 PostgreSQL
25     driverClass:org.postgresql.Driver
26     url:jdbc:postgresql://localhost/dbname
27 Sql Server2000
28     driverClass:com.microsoft.jdbc.sqlserver.SQLServerDriver
29     url:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname
30 Sql Server2005
31     driverClass:com.microsoft.sqlserver.jdbc.SQLServerDriver
32     url:jdbc:sqlserver://localhost:1433; DatabaseName=dbname

 

2.连接到具体的数据库url后面的参数详解

user                      用户名
password                  密码
autoReconnect             联机失败,是否重新联机(true/false)
maxReconnect              尝试重新联机次数
initialTimeout            尝试重新联机间隔
maxRows                   传回最大行数
useUnicode                 是否使用Unicode字体编码(true/false)
characterEncoding          何种编码(GB2312/UTF-8/…)
relaxAutocommit            是否自动提交(true/false)
capitalizeTypeNames        数据定义的名称以大写表示

3.创建一个Statement 。

要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3  种类型:  

 1、执行静态SQL语句。通常通过Statement实例实现。   

2、执行动态SQL语句。通常通过PreparedStatement实例实现。   

3、执行数据库存储过程。通常通过CallableStatement实例实现。  

Statement stmt = con.createStatement() ;   
PreparedStatement pstmt = con.prepareStatement(sql) ;   
CallableStatement cstmt =    con.prepareCall("{CALL demoSp(? , ?)}") ;   

4.执行SQL语句

Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate   

   和execute   

1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句   

        ,返回一个结果集(ResultSet)对象。   

2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或   

        DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等   

3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的   

        语句。   

   具体实现的代码:   

ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;   

int rows = stmt.executeUpdate("INSERT INTO ...") ;   

boolean flag = stmt.execute(String sql) ;   

 

 

 5.处理结果

 

    两种情况:   

1、执行更新返回的是本次操作影响到的记录数。   

2、执行查询返回的结果是一个ResultSet对象。   

    • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些   

      行中数据的访问。   

    • 使用结果集(ResultSet)对象的访问方法获取数据:   

 

1  while(rs.next()){   
2 
3          String name = rs.getString("name") ;   
4 
5     String pass = rs.getString(1) ; // 此方法比较高效   
6 
7      }   

 

    (列是从左到右编号的,并且从列1开始)

 7.关闭JDBC对象

操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声   

     明顺序相反:   

1、关闭记录集   

2、关闭声明   

3、关闭连接对象   

 1 if(rs != null){   // 关闭记录集   
 2 
 3 try{   
 4 
 5             rs.close() ;   
 6 
 7         }catch(SQLException e){   
 8 
 9             e.printStackTrace() ;   
10 
11         }   
12 
13           }   
14 
15 if(stmt != null){   // 关闭声明   
16 
17 try{   
18 
19             stmt.close() ;   
20 
21         }catch(SQLException e){   
22 
23             e.printStackTrace() ;   
24 
25         }   
26 
27           }   
28 
29 if(conn != null){  // 关闭连接对象   
30 
31 try{   
32 
33             conn.close() ;   
34 
35          }catch(SQLException e){   
36 
37             e.printStackTrace() ;   
38 
39          }   
40 
41           }  

 

posted @ 2016-06-14 21:42  仁波切  阅读(264)  评论(0编辑  收藏  举报