jdbc

系统 1533 0

2.4、JDBC程序的代码模板
       开发一个JDBC应用程序,基本需要以下步骤:
(1)、把JDBC驱动类装载入Java虚拟机中,为此,可使用Class.forName()方法,此方法将给定的类加载到Java虚拟机中。如果系统中不存在给定的类,则会引发异常,异常类型为ClassNotFoundException。
         Class.forName(“JDBC驱动类的名称”);

 

(2)、加载驱动,并与数据库建立连接。DriverManager类跟踪已注册的驱动程序,当调用getConnection()方法时,它会搜索整个驱动程序列表,直到找到一个能够连接至数据连接字符串中指定的数据库的驱动程序。加载此驱动程序之后,将使用DriverManager类的getConnection()方法建立与数据库的连接。此方法接收三个参数,分别表示URL、用户名和密码。用户名和密码是可选的。
         Connection conn = DriverManager.getConnection(数据库连接字符串,数据库用户名,密码);

 

(3)、发送SQL语句,并得到结果集。一旦连接建立,就使用该连接创建Statement接口的实例,并将SQL语句传递给它所连接的数据库,并返回类型为ResultSet的对象,它包含执行SQL查询的结果。
         Statement stmt = conn.createStatement();

         ResultSet rs = stmt.executeQuery(select a,b,c from table);

 

(4)、处理结果。使用ResultSet对象的next()方法将光标(cursor)指向下一行。最初光标位于第一行之前,因此第一次调用next()方法将光标置于第一行上。如果到达结果集的末尾,则ResultSet的next()方法会返回false。方法getXXX提供了获取当前行中某列值的途径,列名或列号可用于标识要从中获取数据的列。例如:如果数据表中第一列的列名为a,存储类型为整型,则可以使用两种方法获取存储在该列中的值,如:int x = rs.getInt(“a”);或者:int x = rs.getInt(1);

处理结果的代码示例:
         while(rs.next()){

           int x = rs.getInt(“a”);

           String s = rs.getString(“b”);

           float f = rs.getFloat(“c”);

}

 

JDBC程序的代码模板:

Java代码 复制代码   收藏代码
  1. //把JDBC驱动类装载入Java虚拟机中   
  2. Class.forName(JDBC驱动类的名称);   
  3.   
  4. //加载驱动,并与数据库建立连接,其中数据库连接字符串用来标识数据库   
  5. Connection conn = DriverManager.getConnection(数据库连接字符串,数据库用户名,密码);   
  6.   
  7. //执行SQL语句,并得到结果集   
  8. Statement stmt = conn.createStatement();   
  9. ResultSet rs = stmt.executeQuery(“select a,b,c from table”);   
  10.   
  11. //处理结果   
  12. while (rs.next()){   
  13.    int  x = rs.getInt(“a”);   
  14.   String s = rs.getString(“b”);   
  15.    float  f = rs.getFloat(“c”);   
  16. }  
    //把JDBC驱动类装载入Java虚拟机中
Class.forName(JDBC驱动类的名称);

//加载驱动,并与数据库建立连接,其中数据库连接字符串用来标识数据库
Connection conn = DriverManager.getConnection(数据库连接字符串,数据库用户名,密码);

//执行SQL语句,并得到结果集
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“select a,b,c from table”);

//处理结果
while(rs.next()){
  int x = rs.getInt(“a”);
  String s = rs.getString(“b”);
  float f = rs.getFloat(“c”);
}
  

  

2.5、什么是JDBC URL

JDBC URL提供了一种标识数据库的方法,可以使相应的JDBC驱动程序能识别数据库并与之建立连接。
JDBC URL的标准语法由以下三个部分组成,各部分间用冒号分隔。
Jdbc:<子协议>:<子名称>

JDBC URL的三个部分可以分解如下:
其中jdbc-----代表协议。
<子协议>----驱动程序名或数据库连接机制的名称。
<子名称>----一种标识数据库的方法。


JDBC URL示例:
jdbc:odbc:news

jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=news

 

3、  Statement接口和PreparedStatement接口中的方法
ResultSet executeQuery(String sql):可以执行SQL查询并获取到ResultSet对象。
int executeUpdate(String sql):可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数。
boolean execute(String sql):这是一个最为一般的执行方法,可以执行任意SQL语句,然后获得一个布尔值,表示是否返回ResultSet。


4、  为什么要关闭Statement对象以及数据库连接
如果不关闭Statement对象,它们会一直占用服务器资源,直到Java垃圾收集程序来回收它。作为一种好的编程风格,应在不需要Statement对象时显示地关闭它们,这将立即释放服务器资源,有助于避免潜在的内存问题。同样,使用完数据库连接后,就应关闭它,释放连接所占用的数据库资源。


5、  PreparedStatement语句
PreparedStatement接口继承自Statement接口,PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率。PreparedStatement实例包含已编译的SQL语句,SQL语句可具有一个或多个输入参数。这些输入参数的值在SQL语句创建时未被指定,而是为每个输入参数保留一个问号(“?”)作为占位符。


PreparedStatement pstmt = con.prepareStatement(“update table set a=? where b=?”);

在执行PreparedStatement对象之前,必须设置每个输入参数的值。可通过setXXX方法来完成,其中XXX是与该参数相应的类型。例如,如果参数具有Java类型long,则使用的方法就是设置给该参数的值。例如,以下代码将第一个参数设为长整型值123456789,第二个参数设为整型值10:
pstmt.setLong(1,123456789);

pstmt.setInt(2,10);

 

由于PreparedStatement对象已预编译过,所以其执行速度要快于Statement对象,因此,多次执行的SQL语句应被创建为PreparedStatement对象,以提高效率。
 

6、  格式化时间
SimpleDateFormat hmFromat = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);

hmFromat.format(new Date());

 

7、 步骤

 1)调用Class类的forName()方法,加载并注册数据库驱动。
 2)调用DriverManager类的getConnection()方法,建立到数据库的连接
 3)调用Connection对象的createStatement()方法,访问数据库
 4)调用Statement对象的executeQuery()方法得到ResultSet对象。
 5) 调用ResultSet对象的getObject()方法,处理结果。
 6)释放资源(连接应该尽可能晚建立,释放资源应尽可能早释放。)

 

8、 代码

Java代码 复制代码   收藏代码
  1. import  java.sql.Connection;      
  2. import  java.sql.DriverManager;      
  3. import  java.sql.ResultSet;      
  4. import  java.sql.SQLException;      
  5. import  java.sql.Statement;      
  6.      
  7. /**    
  8.  *Jdbc工具类    
  9.  */      
  10. public   class  JdbcUtils {      
  11.      private   static  String url =  "jdbc:mysql://localhost:3306/test" ;      
  12.      private   static  String user =  "root" ;      
  13.      private   static  String password =  "123456" ;      
  14.      
  15.      private  JdbcUtils() {    }      
  16.      static  {      
  17.          try  {      
  18.             Class.forName( "com.mysql.jdbc.Driver" );      
  19.         }  catch  (ClassNotFoundException ex) {      
  20.              throw   new  ExceptionInInitializerError(ex);      
  21.         }      
  22.     }      
  23.      public   static  Connection getConnection()  throws  SQLException{      
  24.          return  DriverManager.getConnection(url, user, password);      
  25.     }      
  26.      public   static   void  free(Connection conn, Statement st, ResultSet rs) {      
  27.          try  {      
  28.              if  (rs !=  null ) {      
  29.                 rs.close();      
  30.         }      
  31.         }  catch  (SQLException ex) {      
  32.             System.out.println(ex.toString());      
  33.         }  finally  {      
  34.              try  {      
  35.                  if (st!= null ) {      
  36.                     st.close();      
  37.                 }      
  38.             }  catch  (SQLException ex) {      
  39.                 System.out.println(ex.toString());      
  40.             }  finally  {      
  41.                  try  {      
  42.                      if (conn!= null ){      
  43.                         conn.close();      
  44.                     }      
  45.                 }  catch  (SQLException ex) {      
  46.                     System.out.println(ex.toString());      
  47.                 }      
  48.             }      
  49.         }      
  50.     }      
  51. }    
    import java.sql.Connection;   
import java.sql.DriverManager;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.sql.Statement;   
  
/**  
 *Jdbc工具类  
 */  
public class JdbcUtils {   
    private static String url = "jdbc:mysql://localhost:3306/test";   
    private static String user = "root";   
    private static String password = "123456";   
  
    private JdbcUtils() {    }   
    static {   
        try {   
            Class.forName("com.mysql.jdbc.Driver");   
        } catch (ClassNotFoundException ex) {   
            throw new ExceptionInInitializerError(ex);   
        }   
    }   
    public static Connection getConnection() throws SQLException{   
        return DriverManager.getConnection(url, user, password);   
    }   
    public static void free(Connection conn, Statement st, ResultSet rs) {   
        try {   
            if (rs != null) {   
                rs.close();   
	    }   
        } catch (SQLException ex) {   
            System.out.println(ex.toString());   
        } finally {   
            try {   
                if(st!=null) {   
                    st.close();   
                }   
            } catch (SQLException ex) {   
                System.out.println(ex.toString());   
            } finally {   
                try {   
                    if(conn!=null){   
                        conn.close();   
                    }   
                } catch (SQLException ex) {   
                    System.out.println(ex.toString());   
                }   
            }   
        }   
    }   
}  
  
Java代码 复制代码   收藏代码
  1. import  java.sql.Connection;      
  2. import  java.sql.ResultSet;      
  3. import  java.sql.SQLException;      
  4. import  java.sql.Statement;      
  5.      
  6. public   class  Test {      
  7.      
  8.      public   static   void  main(String[] args) {      
  9.         optimize();      
  10.     }      
  11.      
  12.      public   static   void  optimize() {      
  13.         Connection conn =  null ;      
  14.         Statement st =  null ;      
  15.         ResultSet rs =  null ;      
  16.          try  {      
  17.             conn = JdbcUtils.getConnection();      
  18.             st = conn.createStatement();      
  19.             rs = st.executeQuery( "Select * from Students;" );      
  20.              while  (rs.next()) {      
  21.                 System.out.println(rs.getObject( 1 ) +  "\t"  + rs.getObject( 2 ) +  "\t"  + rs.getObject( 3 ) +  "\t"  + rs.getObject( 4 ));      
  22.             }      
  23.         }  catch  (SQLException ex) {      
  24.             System.out.println(ex.toString());      
  25.         }  finally  {      
  26.             JdbcUtils.free(conn, st, rs);      
  27.         }      
  28.     }      
  29. }  

jdbc


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论