zoukankan      html  css  js  c++  java
  • Java知多少(106)程序与数据库连接

    一个网络关系数据库应用系统是一个三层次结构。客户机与服务器采用网络连接,客户机端应用程序按通信协议与服务器端的数据库程序通信;数据库服务程序通过SQL命令与数据库管理系统通信。

    Java程序与数据库连接方法有两种。一种是使用JDBC-ODBC桥接器与数据库连接,一种是用纯Java的JDBC驱动程序实现与数据库连接。

    使用JDBC-ODBC 桥接器与数据库连接

    Java程序使用JDBC-ODBC 桥接器与数据库连接,Java程序与数据库通信的过程是:
    先由数据库应用程序向ODBC驱动管理器发出API调用,ODBC驱动管理器将这个调用转换成向数据库管理系统的ODBC驱动程序调用,数据库管理系统又将这个调用转换成对操作系统的数据输入/输出调用。最后,操作系统从数据库中得到实际数据逐级返回。

    数据库编程首先要设置数据源,在ODBC中设置数据源的步骤如下:

    1. 打开Windows控制面板中的管理工具。对于windows XP:选择“性能维护”>>“管理工具”>>“数据源(ODBC)”; 对于windows 2000:选择“管理工具”>>“数据源”。
    2. 打开“数据源”。出现ODBC数据源管理器对话框,显示现有的数据源名称。
    3. 选择“用户DSN”,单击“添加”按钮,出现安装数据源驱动程序对话框。Access(*.mdb)数据源,单击“完成”按钮,出现“创建数据源对话框,键入需要创建的数据源名,并为创建的数据源选择一个数据库表。
    4. 单击数据库区域的“选择”按钮,选择需要的数据库表。当需要为数据源授权访问级别时,单击“高级”按钮。设置登录名和密码后,单击“确定”按钮,完成Access数据库在ODBC管理器中的配置。
    5. 如果还没有数据库表,则需创建一个数据库表。


    数据源就是数据库,在设定了数据源的基础上,Java程序要访问数据库表,还要建立JDBC-ODBC桥接器,让程序与数据库连接。以后,程序就可向数据库发送SQL语句,处理数据库返回的结果。Java数据库连接JDBC(Java DataBase Connectivity)由一组用Java语言编写的类和接口组成,JDBC是Java程序与数据库连接API。它能做以下三件事情:与某个数据库建立连接、向数据库发送SQL语句和处理数据库返回的结果。

    调用类方法Class.forName(String s)能建立JDBC-ODBC桥接器。例如,代码:

    1     try{
    2         Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
    3     }catch(Exception e){}

    为Java程序加载了驱动程序。

    【例 13-7】说明与数据库连接的方法connectByJdbcOdbc(),该方法按给定的数据库URL、用户名和密码连接数据库,如果连接成功,方法返回连接对象,连接不成功,则返回空。

     1 public static connection connectByjdbcOdbc(String url, String username, String password){
     2     Connection con = null;
     3     try{
     4         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   //加载ODBC驱动程序
     5     }
     6     catch (Exception e){
     7         e.printStackTrace();
     8         return null; //连接失败
     9     }
    10     try{
    11         con = DriverManager.getConnection(url, username, password);
    12     }
    13     catch (SQLExceotuib e){
    14         e.printStackTrace();
    15         return null; //连接不成功
    16     }
    17     return con; //连接成功
    18 }
    19 
    20 以下代码是对connectByJdbcOdbc()方法的一个调用,数据库连接成功,弹出数据库连接成功信息窗,否则弹出数据库连接不成功信息窗。
    21 if ((con = connectByJdbcOdbc("jdbc:odbc:redsun", "xia", "1234")) != null){
    22     JoptionPane.showMessageDialog(null, "数据库连接成功");
    23     try{
    24         con.close();
    25         con = null;
    26     }
    27     catch (SOLException e){}
    28 }
    29 else
    30     JOptionPane.showMessageDialog(null, "数据库连接失败");

    用纯Java的JDBC驱动程序实现与数据库连接

    Java程序也可以用纯Java的JDBC驱动程序实现与数据库连接。这种方法应用较广泛,但是需要下载相应的驱动程序包,因为不同的数据库的连接代码可能不同,连接不同的数据库,加载的驱动程序也可能不同。例如,连接SQLServer的驱动程序在www.msdn.com网站下载,有3个包:msbase.jar,mssqlserver.jar和msutil.jar,并要求将这3个包放在jdkjrelibext目录下,或在CLASSPATH中设置其放置位置。

    使用纯Java的JDBC驱动程序实现与数据库连接的过程如下:

    1. 加载驱动程序。有两种加载驱动程序的方式:
      • 一各是将驱动程序添加到java.lang.System的属性jdbc.drivers中。这是一个DriverManager类加载驱动程序类名的列表,表元用冒号分隔。
      • 另一种方式是从相关的网站下载驱动程序后,在程序中利用Class.forName()方法加载指定的驱动程序。例如:
            Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
    2. 创建指定数据库的URL。数据库的URL对象类似网络的统一资源定位符,其格式是:
           
       jdbc:subProtocol:subName://hostname:port:Databasename=XX
      其中,subprotocol是某种驱动程序支持的数据库连接机制; subName是当前连接机制下的具体名称;hostName是主机名;port是相应的连接端口;DatabaseName是要连接的数据库名称。例如,以下代码可以是一个数据库的URL:
          
      jdbc:Microsoft:sqlserver://localhost:1433;Databasename=ksinfo
      该数据库的URL说明利用miscrosoft提供的机制,用sqlserve驱动,通过1433端口访问本机上的ksInfo数据库。
    3. 建立连接。驱动程序管理器(DriverManager)的方法getConnection()建立连接。


    【例 13-8】说明与数据库连接的静态方法connectByJdbc(),该方法按给定的数据库URL、用户名和密码连接数据库,如果连接成功,方法返回true,连接不成功,则返回false。

     1 public static Connection conectByJdbc(String url, String username, String password){
     2     Connection con = null;
     3     try{
     4         Class.forName( //加载特定的驱动程序
     5         "com.microsoft.jdbc.sqlserver.SQLServerDriver");
     6     }
     7     catch (Exception e){
     8         e.printStackTrace();
     9         return null; //连接失败
    10     }
    11     try{
    12         con = DriverManage.getConnection(url, username, password);
    13     }
    14     catch (SQLException e){
    15         e.printStackTrace();
    16         return null; //连接失败
    17     }
    18     return con; //连接成功
    19 }

    系列文章:

  • 相关阅读:
    洛谷 P1194 飞扬的小鸟 题解
    洛谷 P1197 星球大战 题解
    洛谷 P1879 玉米田Corn Fields 题解
    洛谷 P2796 Facer的程序 题解
    洛谷 P2398 GCD SUM 题解
    洛谷 P2051 中国象棋 题解
    洛谷 P1472 奶牛家谱 Cow Pedigrees 题解
    洛谷 P1004 方格取数 题解
    洛谷 P2331 最大子矩阵 题解
    洛谷 P1073 最优贸易 题解
  • 原文地址:https://www.cnblogs.com/Coda/p/4605194.html
Copyright © 2011-2022 走看看