`
yyys8517750
  • 浏览: 140210 次
  • 性别: Icon_minigender_1
  • 来自: 岳阳
社区版块
存档分类
最新评论

jdbc

 
阅读更多

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简单写法JDBC简单写法JDBC简单写法

    JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单写法JDBC简单...

    Spring Data JDBC与JDBC的区别

    JDBC规范   java.sql和javax.sql两个包中的类与接口(天龙八部):  DataSource:数据源  DriverManager:驱动管理  Driver:JDBC驱动  Connection:数据库连接  Statement:语句,执行SQL  PrepareStatement:...

    sqlite-jdbc-3.15.1-API文档-中文版.zip

    赠送jar包:sqlite-jdbc-3.15.1.jar; 赠送原API文档:sqlite-jdbc-3.15.1-javadoc.jar; 赠送源代码:sqlite-jdbc-3.15.1-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.15.1.pom; 包含翻译后的API文档:...

    Java连接达梦数据库驱动dm_jdbc

    Java连接达梦数据库驱动dm_jdbc: dm_jdbc\com.dameng.floader.jar dm_jdbc\com.dameng.impexp.jar dm_jdbc\Dm7Dictionary.jar dm_jdbc\Dm7JdbcDriver14.jar dm_jdbc\Dm7JdbcDriver15.jar dm_jdbc\Dm7JdbcDriver16....

    sqlite-jdbc-3.34.0-API文档-中文版.zip

    赠送jar包:sqlite-jdbc-3.34.0.jar; 赠送原API文档:sqlite-jdbc-3.34.0-javadoc.jar; 赠送源代码:sqlite-jdbc-3.34.0-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.34.0.pom; 包含翻译后的API文档:...

    log4jdbc监控sql及执行时间

    1、在应用中jdbc url最前面添加jdbc:log4;比如oracle的url就变成了jdbc:log4jdbc:oracle:thin:@x.x.x.x:1521:dbname; 2、在日志系统中设置jdbc.sqlonly、jdbc.sqltiming等日志级别,可直接将log4jdbc doc中的日志...

    jdbc jdbc jdbc

    jdbc jdbc jdbc jdbc jdbc jdbc jdbc jdbc

    适用于 SQL Server 2014、2012、2008R2的JDBC Drivers 4.1

    它属于 Type 4 JDBC 驱动程序,通过 Java 平台(企业版 5、6 和 7)中可用的标准 JDBC 应用程序接口 (API) 提供数据连接。 适用于 SQL Server 的 Microsoft JDBC Driver 4.1(预览版)与 JDBC 4.0 兼容,并且可以在...

    sqljdbc4.jar和sqljdbc.jar下载

    sqljdbc.jar 类库提供对 JDBC 3.0 的支持。 sqljdbc.jar 类库要求使用 5.0 版的 Java 运行时环境 (JRE)。连接到数据库时,在 JRE 6.0 上使用 sqljdbc.jar 会引发异常。 注意: JDBC Driver 2.0 不支持 JRE 1.4。...

    JDBC-ODBC BRIDGE PATCH for JDK 1.6/1.7 64bit

    SUN JDK 1.6/1.7 64bit的JDBC-ODBC Bridge有个缺陷:会随机抛出异常如下,在所有的ODBC Driver上。 java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid string or buffer length at sun.jdbc.odbc....

    hive-jdbc hive jdbc驱动

    hive-jdbc

    sqlserver驱动包 jdbc驱动 sqljdbc.jar和sqljdbc4.jar

    sqlserver驱动包 jdbc驱动 sqljdbc.jar sqljdbc4.jar jdbc连接sqlserver数据库驱动, sqljdbc.jar和sqljdbc4.jar均有

    Microsoft SQL Server 2008 JDBC 3.0(微软官网下载)

    SQL Server JDBC Driver 3.0,这是一个 Type 4 JDBC 驱动程序,它通过 Java Platform, Enterprise Edition 5 及更高版本中可用的标准 JDBC 应用程序编程接口 (API) 提供数据库连接。 系统要求: •支持的操作系统:...

    JDBCDriver3.0.rar_jdbc driver 3.0_sql jdbc 3.0_sql server jdbc_s

    Microsoft SQL Server JDBC Driver 3.0.JSP驱动。

    SpringBoot中封装jdbc工具类

    现在的数据层的开发,大多会使用...但是在一些极端的场景下往往原生的jdbc方式操作数据库更灵活,性能更高。由于部分场景下MyBatis或JPA之类无法满足我的需求,所以我打算自己封装一套查数据库的工具类。 文章地址: ...

    JDBC 解析JDBC中文API

    JDBC 解析JDBC中文API各种数据库之间的链接问题,网络编程

    logstash-output-jdbc.zip

    ./logstash-plugin prepare-offline-pack --overwrite --output logstash-input-jdbc.zip logstash-input-jdbc 最后成功会出现以下信息 You can install it with this command `bin/logstash-plugin install file...

    JDBC代码JDBC代码JDBC代码

    JDBC代码 JDBC代码JDBC代码 JDBC代码

    JavaEE源代码 jdbc2_0-stdext

    JavaEE源代码 jdbc2_0-stdextJavaEE源代码 jdbc2_0-stdextJavaEE源代码 jdbc2_0-stdextJavaEE源代码 jdbc2_0-stdextJavaEE源代码 jdbc2_0-stdextJavaEE源代码 jdbc2_0-stdextJavaEE源代码 jdbc2_0-stdextJavaEE源...

    数据库实验8 java连接数据库(JDBC代码+报告)

    《数据库系统概论》课程之实验八,通过JDBC访问数据库。本文件中包含实验报告一份,可运行代码一份与JDBC的驱动jar包。 程序实现了使用Java语言编程实现对数据库的访问,所有的SQL操作均在自己建立的新库里进行,...

Global site tag (gtag.js) - Google Analytics