`

利用JDBC访问数据库的步骤

    博客分类:
  • JDBC
阅读更多

 步骤

 1)调用Class类的forName()方法,加载并注册数据库驱动。


 2)调用DriverManager类的getConnection()方法,建立到数据库的连接


 3)调用Connection对象的createStatement()方法,访问数据库


 4)调用Statement对象的executeQuery()方法得到ResultSet对象。


 5) 调用ResultSet对象的getObject()方法,处理结果。


 6)释放资源(连接应该尽可能晚建立,释放资源应尽可能早释放。)

 

下面是初始代码:

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *利用JDBC连接数据库
 * @author Haowang
 */
public class Base {
    public static void main(String[] args) throws Exception{
        prime();
    }

    /**
     * 初始代码,了解连接数据库的基本步骤
   * @throws ClassNotFoundException
     * @throws SQLException
     */
    private static void prime() throws ClassNotFoundException, SQLException {
        //1.注册驱动
       Class.forName("com.mysql.jdbc.Driver");     //推荐使用这种方式,不会对具体的驱动类产生依赖
//        DriverManager.registerDriver(new Driver());     //会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖
//        System.setProperty("jdbc.Drivers", "com.mysql.jdbc.Driver");      //虽然不会对具体的驱动类产生依赖,但注册不太方便,所以很少使用

        //2.建立连接(Connection)
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url, user, password);

        //3.创建语句(Statement)
        Statement st = conn.createStatement();

        //4.执行语句
        ResultSet rs = st.executeQuery("Select * from Students;");

        //5.处理结果
        while(rs.next()) {
            System.out.println(rs.getObject(1)+"\t"+rs.getObject(2)+"\t"+rs.getObject(3)+"\t"+rs.getObject(4));
        }

        //6.释放资源
     rs.close();
        st.close();
        conn.close();
    }
}

 上面代码有很多缺陷,在实际使用过程中应进行优化:

  释放资源时应该保证即使前面代码出现异常也能正常释放资源;
  驱动只注册一次,采用单例模式(采用静态代码块也可以);
  新建一个工具类JdbcUtils,通过这个工具类来访问数据库;

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *Jdbc工具类
 * @author HaoWang
 */
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());
                }
            }
        }
    }
}

 

package jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author Haowang
 */
public class Optimization {

    public static void main(String[] args) {
        optimize();
    }

    public static void optimize() {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            conn = JdbcUtils.getConnection();
            //conn = JdbcUtils.getInstance().getConnection();
            st = conn.createStatement();
            rs = st.executeQuery("Select * from Students;");
            while (rs.next()) {
                System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3) + "\t" + rs.getObject(4));
            }
        } catch (SQLException ex) {
            System.out.println(ex.toString());
        } finally {
            JdbcUtils.free(conn, st, rs);
        }
    }
}

 下面是用单例模式编写的代码:

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *Jdbc工具类
 * @author HaoWang
 */
public class JdbcUtilsSimple {
    private static String url = "jdbc:mysql://localhost:3306/test";
    private static String user = "root";
    private static String password = "123456";
    private static JdbcUtilsSimple instance = null;

    private JdbcUtilsSimple() {    }
    public static JdbcUtilsSimple getInstance() {
        if(instance == null) {
            synchronized (JdbcUtilsSimple.class) {
                if(instance == null) {
                    instance = new JdbcUtilsSimple();
                }
            }
        }
        return instance;
    }
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }
    public Connection getConnection() throws SQLException{
        return DriverManager.getConnection(url, user, password);
    }
    public 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());
                }
            }
        }
    }
}

 

分享到:
评论

相关推荐

    数据库概论实验范文实验八:通过JDBC方式访问数据库

    实验八的主题是“通过JDBC方式访问数据库”,这是数据库概论课程中的一项重要实践内容。JDBC(Java Database Connectivity)是Java语言中用于与各种数据库交互的一种标准接口,由Sun Microsystems开发并定义,现已...

    JDBC与Java数据库编程

    JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一的访问接口。JDBC的目标是允许开发人员能够编写数据库独立的应用程序,即应用程序无需依赖于底层数据库的具体...

    jdbc数据库

    oracle,sql server),为了避免每一个数据库都学习一套新的api,sun公司定义了jdbc接口(方法的申明),各个数据库厂商去写实现类(驱动),这样java程序员只需要掌握jdbc的调用即可访问任何数据库

    java利用jdbc连接数据库之插入数据.docx

    ### Java利用JDBC连接数据库之插入数据 #### 技术方案概述 本文档详细介绍了如何使用Java编程语言结合JDBC(Java Database Connectivity)技术来实现与数据库的连接,并完成数据的插入操作。JDBC是一种用于执行SQL...

    实验7-通过JDBC访问数据库.doc

    - **通过JDBC访问数据库的步骤:** - **创建URL:**首先需要创建一个指向特定数据源的URL,例如`String url = "jdbc:odbc:Student";`。 - **加载驱动:**使用`Class.forName()`方法加载相应的JDBC驱动程序。 - **...

    JDBC API数据库编程实作教材

    本教材《JDBC API数据库编程实作教材》深入浅出地讲解了如何利用JDBC进行数据库编程。 1. **JDBC基础** - JDBC API的核心是Java.sql包,其中包含了DriverManager、Connection、Statement、ResultSet等关键接口和类...

    实验八通过JDBC方式访问数据库

    通过JDBC访问和操纵数据库的基本步骤如下: 1. **建立数据库连接**:使用`DriverManager.getConnection()`方法连接到数据库。 2. **创建语句对象**:创建`Statement`或`PreparedStatement`对象,用于执行SQL语句。 3...

    JDBC访问数据库

    在本次实验中,实验者将通过JDBC来访问数据库,实验内容包括了多个部分,首先是UML建模、数据库设计以及通过JDBC访问数据库。UML(统一建模语言)是软件工程中广泛使用的建模语言,它提供了一套标准化的图示方法,...

    jdbc连接数据库事务工厂模式

    综上所述,"jdbc连接数据库事务工厂模式"结合了JDBC的数据库操作、事务管理的实现以及工厂模式的设计思想,为数据库访问提供了更加灵活、可扩展的解决方案。通过工厂模式创建事务管理对象,可以在不修改原有代码的...

    JDBC不同数据库连接

    Java Database Connectivity (JDBC) 是 Java 平台上的标准 SQL 数据库访问技术。它提供了一种统一的方式来与各种关系型数据库进行交互,允许开发者通过标准的 API 来执行 SQL 语句、处理结果集等操作。在实际开发...

    实验九 jdbc访问数据库.doc

    ### 实验九 JDBC 访问数据库 #### 一、实验目的 本实验旨在使学习者掌握两种访问数据库的方法:一种是传统的直接访问方式,另一种则是使用数据源的方式。这两种方法在实际开发过程中都非常常见,因此了解它们的工作...

    java JDBC连接数据库代码大全

    #### 三、使用JDBC访问数据库的基本步骤 1. **加载JDBC驱动**:使用`Class.forName("com.mysql.jdbc.Driver")`加载MySQL数据库的JDBC驱动。 2. **建立连接**:通过`DriverManager.getConnection(url, username, ...

    Web开发技术实验1(应用JDBC进行数据库开发)

    以下是使用JDBC进行数据库操作的基本步骤: 1. 加载驱动:引入数据库驱动类,并通过`Class.forName()`方法加载驱动,例如`Class.forName("com.mysql.jdbc.Driver")`对于MySQL数据库。 2. 建立连接:使用`...

    android通过JDBC直接访问Mysql数据库

    - **安全性问题**:直接使用JDBC访问数据库可能会带来安全风险,如SQL注入攻击等。因此,在处理用户输入时应格外小心。 - **性能考虑**:频繁地打开和关闭数据库连接可能会影响应用程序的性能。可以考虑使用连接池...

    JDBC连接数据库的操作

    在Java开发中,JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。它由一组用Java编程语言编写的接口和类组成。本文将详细解析如何使用JDBC进行数据库连接及...

    使用jdbc获取数据库基础信息(附源码)

    总的来说,`TestJDBC.java`源代码可能展示了如何利用JDBC连接到数据库,执行SQL查询并处理返回的结果。这个过程涉及注册数据库驱动、建立连接、创建Statement、执行查询、处理结果集,以及最后的资源释放。通过理解...

    java JDBC与数据库访问PPT课件.pptx

    本课件主要介绍了数据库的基础知识以及如何通过JDBC访问数据库。 首先,数据库基础知识涉及到数据管理的两个阶段:文件管理和数据库管理。在文件管理阶段,数据以文件形式存储,由操作系统管理,但存在数据冗余和...

    eclipse-jdbc连接数据库源码

    JDBC是Java平台的一部分,它为Java应用程序提供了一种标准的方法来访问关系型数据库,无论是Oracle、MySQL、SQL Server还是其他任何支持JDBC的数据库。通过JDBC,开发者可以执行SQL语句、处理结果集、事务管理等操作...

    利用JDBC整合Notes数据库和Oracle数据库.pdf

    在本文中,作者介绍了如何利用JDBC连接Oracle数据库的步骤: 1. 注册Oracle数据库驱动:通过`Class.forName("oracle.jdbc.driver.OracleDriver")`加载Oracle的JDBC驱动。 2. 获取与Oracle数据库的连接:通过`...

Global site tag (gtag.js) - Google Analytics