zoukankan      html  css  js  c++  java
  • JDBC操纵数据库的步骤(以SQLServer为例)

    JDBC的简介

             JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,操作不同的数据库需要使用不同的JDBC。

    JDBC编程步骤

    一、Load the Driver  加载JDBC驱动程序

             DriverManager管理一组JDBC驱动程序的基本服务。可以想象成一个管家,通过注册DriverManager可以拿到跟数据库的一根链接。

              首先新建一个项目,过程不再赘述。右击项目->Build Path -> Add External Archives。然后选择sqljdbc4.jar

             然后实例化SQLServerDriver,打开jar包你会发现它的路径是com.microsoft.sqlserver.jdbc.SQLServerDriver。实例化有两种方法:

        1、使用Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

               Class 与class不同,Class是一个类

         2、 new com.microsoft.sqlserver.jdbc.SQLServerDriver();

          两种方法都差不多,没啥区别,看个人爱好了。

     二、连接数据库

    1 Connection conn = DriverManager.getConnection(, ,  ,);

        getConnection有三个参数。

              第一个参数是数据库的连接字符串,这个需要根据实际情况的不同而有所不同。

              第二个是用户名

              第三个是密码

    三、Execute the SQL 执行数据库语句

            执行数据库语句前要创建一个语句对象。Statement

    1 Statement stmt = conn.createStatement();                           
    

      四、处理得到的结果集

    1   ResultSet rs = stmt.executeQuery("select * from dept");     

             返回来的结果集rs,指针指向第一条数据的前面,所以需要先next一下。

    1          while( rs.next()){
    2 
    3                  rs.getString();
    4 
    5                  rs.getInt();
    6 
    7                     ……
    8            }

    五、关闭数据库

                原则上,后打开的先关闭

             ResultSet.close
             Statement.close
             Connection.close

    下面是完整代码:

     1 import java.sql.*;
     2 public class JTest{
     3 
     4     public static void main(String[] args) throws Exception{
     5         String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
     6         String connectDB="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master";
     7         //实例化驱动
     8         Class.forName(JDriver);
     9         String user ="sa";
    10         String possword = "";
    11         //连接数据库
    12         Connection conn = 
    13 DriverManager.getConnection(connectDB, user, possword);
    14         //创建语句对象
    15         Statement stmt = conn.createStatement();
    16         //执行select语句
    17         ResultSet rs =  
    18                   stmt.executeQuery("Select * from dept");
    19         //循环获取结果集
    20          while( rs.next()){
    21              System.out.println(rs.getString("deptno"));
    22              System.out.println(rs.getInt("deptno"));
    23          }
    24          //关闭数据库,遵循后打开先关闭的原则。
    25          rs.close();
    26          stmt.close();
    27          conn.close();
    28     }
    29 }

    JDBC编程大致就这么些步骤,不过以上的代码太不专业了,而且有点问题。实例化驱动、连接数据库、创建语句对象等代码都会抛出异常,假若在程序运行的过程中出现异常而导致程序终止,后面的关闭数据库的语句不会被执行,而且被申请的内存不会被释放,长此以往会导致资源的耗尽。因此这里需要将throws 改为try/catch。

    import java.sql.*;
    public class JText {
    
        public static void main(String[] args) {
            String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
            String connectDB="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master";
            String user ="sa";
            String possword = "";
            Connection conn = null;
            Statement stmt = null;
            ResultSet  rs = null;
            try {
                //实例化驱动
                Class.forName(JDriver);
                //连接数据库
                conn = DriverManager.getConnection(connectDB, user, possword);
                //创建语句对象
                 stmt = conn.createStatement();
                //执行select语句
                 rs =  stmt.executeQuery("Select * from dept");
                //循环获取结果集
                 while( rs.next()){
                     System.out.println(rs.getString("deptno"));
                     System.out.println(rs.getInt("deptno"));
                 }
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally{
                try{
                     //关闭数据库,遵循后打开先关闭的原则。
                    if(rs != null){      //在关闭之前,判断一下是否为空
                        rs.close();
     //关闭之后 释放资源,这是一个很好的习惯
                        rs =null;    
                    }
                     if (stmt != null){
                         stmt.close();
                         stmt = null;
                     }
                     if (conn != null){
                         conn.close();
                         conn =null;
                     }
                }catch (SQLException e){
                    e.printStackTrace();
                }
                
            }
        }
    }


  • 相关阅读:
    求职者:推销自己的四大妙招
    你的幸福,我的未来
    巧用close_trace命令释放误删trace文件
    转储控制文件信息
    _shared_pool_reserved_pct or shared_pool_reserved_size with ASMM
    【书籍推荐】Oracle 8i Internal Services
    【书籍推荐】Expert Oracle Practices
    Twitter将启动其在犹他州的客户数据中心
    facebook发布了Tornado V1.0
    latch free:cache buffer handles造成的SQL性能问题
  • 原文地址:https://www.cnblogs.com/freeabyss/p/3187062.html
Copyright © 2011-2022 走看看