`
yeshaoting
  • 浏览: 684129 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[小结]Java数据库连接 - JDBC方式

    博客分类:
  • J2SE
 
阅读更多

 

 

1. JDBC方式 - 连接数据库

一般步骤:

1.1 加载驱动

每个驱动程序类必须实现的接口。 Java SQL 框架允许多个数据库驱动程序。每个驱动程序都应该提供一个实现 Driver 接口的类。 DriverManager 会试着加载尽可能多的它可以找到的驱动程序,然后,对于任何给定连接请求,它会让每个驱动程序依次试着连接到目标 URL

强烈建议每个 Driver 类应该是小型的并且是单独的,这样就可以在不必引入大量支持代码的情况下加载和查询 Driver 类。 在加载某一 Driver 类时,它应该创建自己的实例并向 DriverManager 注册该实例。这意味着用户可以通过调用以下程序加载和注册一个驱动程序 Class.forName("com.mysql.jdbc.Driver")

 

e.g.

Class.forName("com.mysql.jdbc.Driver");

 

1.2 建立数据库连接

管理一组 JDBC 驱动程序的基本服务。

作为初始化的一部分,DriverManager 类会尝试加载在 "jdbc.drivers" 系统属性中引用的驱动程序类。这允许用户自定义由他们的应用程序使用的 JDBC Driver。例如:

a) ~/.hotjava/properties 文件中,用户可以指定:jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver

b) 程序还可以在任意时间显式地加载 JDBC 驱动程序:Class.forName("com.mysql.jdbc.Driver");

 

注:DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。

 

e.g.

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/addressbook", "root", "root");

 

 

1.3 创建一个 Statement 对象来将 SQL 语句发送到数据库

用于执行静态 SQL 语句并返回它所生成结果的对象。

 

在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都会隐式关闭它。

 

相关语法:

Statement createStatement(int resultSetType,

                          int resultSetConcurrency,

                          int resultSetHoldability)

                          throws SQLException

创建一个 Statement 对象,该对象将生成具有给定类型并发性可保存性 ResultSet 对象。此方法与默认无参 createStatement 方法相同,但它允许重写默认结果集类型、并发性和可保存性。

 

参数:

resultSetType - 以下 ResultSet 常量之一:ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVE ResultSet.TYPE_SCROLL_SENSITIVE

 

resultSetConcurrency - 以下 ResultSet 常量之一:ResultSet.CONCUR_READ_ONLY ResultSet.CONCUR_UPDATABLE

 

resultSetHoldability - 以下 ResultSet 常量之一:ResultSet.HOLD_CURSORS_OVER_COMMIT ResultSet.CLOSE_CURSORS_AT_COMMIT

 

e.g.

Statement stmt = conn.createStatement();

 

 

1.4 执行数据库操作

java.sql.Statement类中的成员方法:

ResultSet executeQuery(String sql)

          执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

 

int executeUpdate(String sql)

          执行给定 SQL 语句,该语句可能为 INSERTUPDATE DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

 

e.g.

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

if(rs.next())

    System.out.println(rs.getString("username") + "\t" + rs.getString("password"));

 

1.5 释放数据库连接资源(有先后顺序)

e.g.

rs.close();

stmt.close();

conn.close();

 

 

完整数据库连接代码:

e.g.

 

/**

 * Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)

 * All right reserved.

 *

 * Created on Aug 1, 2011 4:38:46 PM

 * http://jarg.iteye.com/

 * Author: Jarg Yee <yeshaoting@gmail.com>

 */

package com.iteye.jarg.dao;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

/**

 * TODO JDBC方式 - 基本数据库工具类

 */

public class DBUtil

{

   

    private String driverClassName = "com.mysql.jdbc.Driver";

    private String url = "jdbc:mysql://localhost:3306/addressbook";

    private String username = "root";

    private String password = "root";

   

    private Connection conn = null;

    private Statement stmt = null;

    private ResultSet rs = null;

   

    /**

     * 初始化数据库配置信息

     * */

    public DBUtil()

    {

       build();

    }

   

    /**

     * 建立数据库连接

     * */

    public void build()

    {

       try

       {

           Class.forName(driverClassName);

           conn = DriverManager.getConnection(url, username, password);

           stmt = conn.createStatement();

       }

       catch (ClassNotFoundException e)

       {

           System.out.println("建立数据库连接出错\n" +  e.getMessage());

           this.closeConnection();

           System.exit(0);

       }

       catch (SQLException e)

       {

           System.out.println("建立数据库连接出错\n" +  e.getMessage());

           this.closeConnection();

           System.exit(0);

       }

      

    }

   

    /**

     * 数据库查询

     * */

    public ResultSet executeQuery(String sql)

    {

       try

       {

           rs = stmt.executeQuery(sql);

       }

       catch (SQLException e)

       {

           System.out.println("数据查询出错\n" + e.getMessage());

           return null;

       }

       return rs;

    }

   

    /**

     * 数据库更新

     * */

    public int executeUpdate(String sql)

    {

       int count = 0;

       try

       {

           count = stmt.executeUpdate(sql);

       }

       catch (SQLException e)

       {

           System.out.println("数据库更新出错\n" + e.getMessage());

           return 0;

       }

       return count;

    }

   

    /**

     * 释放数据库连接资源

     * */

    private void closeConnection()

    {

       try

       {

           if(conn != null && !conn.isClosed())

           {

              conn.close();

           }

       }

       catch (SQLException e)

       {

           System.out.println("释放数据库连接资源出错\n" + e.getMessage());

       }

    }

   

    /**

     * 释放SQL语句声明资源

     * */

    private void closeStatement()

    {

       try

       {

           if(stmt != null && !stmt.isClosed())

           {

              stmt.close();

           }

       }

       catch (SQLException e)

       {

           System.out.println("释放SQL语句声明资源出错\n" + e.getMessage());

       }

    }

   

    /**

     * 释放结果集资源

     * */

    private void closeResultSet()

    {

       try

       {

           if(rs != null && !rs.isClosed())

           {

              rs.close();

           }

       }

       catch (SQLException e)

       {

           System.out.println("释放结果集资源出错\n" + e.getMessage());

       }

    }

   

    /**

     * 释放数据库资源

     * */

    public void close()

    {

       this.closeResultSet();

       this.closeStatement();

       this.closeConnection();

    }

   

    /**

     * for debugging.

     * */

    public static void main(String[] args) throws Exception

    {

       DBUtil db = new DBUtil();

      

       String username = "ye";

       String password = "ye";

      

       String sql = "select * from user where username = '" + username + "' and password = '" + password + "';";

       ResultSet rs = db.executeQuery(sql);

       if(rs.next())

           System.out.println(rs.getString("username") + "\t" + rs.getString("password"));

      

       db.close();

    }

}

 

分享到:
评论

相关推荐

    JDBC与Java数据库编程

    #### 小结 通过本章节的学习,我们了解了JDBC的基本概念、体系结构、API及其版本发展情况,同时也学习了如何使用JDBC来进行基础的数据库操作。接下来,我们将在后续章节中深入探讨JDBC的高级应用以及其他相关的主题...

    数据库连接方式-个人小结

    数据库连接是应用程序与数据库进行交互的基础,本文将详细介绍三种连接SQL Server数据库的方式:JDBC方式连接SQL2005和SQL2000,以及ODBC方式连接数据库。理解并熟练掌握这些方法对于开发和维护数据库应用至关重要。...

    java数据库连接方法总结(附带数据库驱动)

    本人学习java过程中,对多种数据库连接方法进行了小结,都有程序例程,例程非常简单易懂,同时附带了mySQL和SQLServer2000数据库驱动,希望对刚刚接触java数据库的朋友有帮助。 导入数据库驱动时要注意: mySQL的...

    Java jdbc数据库连接池总结.doc

    Java JDBC数据库连接池是Java应用程序与数据库交互的重要优化手段,旨在提高数据库访问效率和资源利用率。在传统的JDBC操作中,每次请求都需要建立和关闭数据库连接,这不仅耗时,还可能导致系统资源的过度消耗,...

    Spring boot连接oracle数据库JDBC配置步骤

    Spring Boot 连接 Oracle 数据库 JDBC 配置步骤 在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,...

    java数据库连接池实现

    根据给定的信息,本文将详细解释“Java数据库连接池实现”的相关知识点,包括连接池的基本概念、作用以及如何通过示例代码实现一个简单的Java数据库连接池。 ### Java数据库连接池基本概念 数据库连接池(Database...

    JDBC与Java数据库编程.pdf

    #### 五、小结 JDBC作为Java平台中用于访问数据库的标准API,极大地简化了Java开发人员与数据库交互的过程。通过了解JDBC的基本概念、体系结构、版本发展以及常用API,我们可以更好地利用这一强大的工具来开发高效...

    java数据库课程设计--学生选课管理系统的.doc

    通过本次设计,主要是加强对 JAVA 所学知识的巩固和融会贯通,可以说是对一个学期所学知识的一个小结,加深对 JAVA 数据库的理解。 二、需求分析 该系统具备管理学生信息、课程信息、选课信息的功能:用户通过输入...

    JDBC连接8种数据库.docx

    下面将详细介绍八种常见数据库的JDBC连接方式。 一、Oracle数据库连接 Oracle数据库是一种关系型数据库管理系统,广泛应用于企业级应用中。JDBC连接Oracle数据库需要加载Oracle的驱动程序,下面是连接代码: ```...

    JAVA数据库基本操作,增删改查

    ### JAVA数据库基本操作:增删改查 在Java开发中,与数据库进行交互是一项非常重要的技能。无论是构建简单的Web应用还是复杂的企业级系统,开发者都需要掌握如何通过Java代码执行SQL命令来实现数据的增删改查操作。...

    Java数据库技术详解 DOC简版

    1.5 本章小结 第2章 SQL语句基础之DDL 2.1 DDL基础 2.2 DDL操作视图 2.3 本章小结 第3章 SQL语句基础之DML 3.1 SELECT语句基础 3.2 WHERE子句 3.3 ORDER BY子句 3.4 GROUP BY和HAVING子句 3.5 ...

    基于JDBC操作数据库

    #### 四、小结 通过以上步骤,我们可以清晰地了解到如何使用JDBC来连接MySQL数据库并执行基本的操作。掌握了这些基础内容后,再学习更高级的技术,比如ibatis等ORM框架时,将会更加得心应手。理解JDBC的工作原理和...

    解决Java 连接MySQL数据库的出现的问题

    在本篇文章中,我们将深入探讨如何有效地解决Java应用程序在连接MySQL数据库时可能遇到的各种问题。这一过程对于确保数据访问层的稳定性和效率至关重要。通过以下详细的步骤和解释,您将能够迅速定位并解决连接过程...

    java连接数据库大全

    Java连接数据库主要通过Java Database Connectivity (JDBC) API来实现。JDBC API为Java应用程序提供了标准接口,可以用来访问任何支持SQL的关系型数据库管理系统(RDBMS)。本文将详细介绍几种常见的Java连接数据库...

    vs code连接sql server数据库步骤及遇到的问题小结

    最近因为要在vs code上连接到sql server数据库,第一次尝试,之前用 java的时候使用jdbc连接过数据库,感觉用vs code连接数据库步骤要简单一些,网上写的博客也不是特别多,就顺便把我的步骤记录下来,仅供参考,...

    Java数据库编程宝典 PDF格式

    《Java数据库编程宝典》是一本集综合性、实用性为一体的全面讲解使用Java语言进行高级数据库开发的书籍。本书从数据库的基础知识、软件开发环境的构建以及JSP,Veloctiy,OJB,Struts等常用技术的基础知识入手,通过...

    各种数据库数据库连接语句

    ### 小结 通过以上介绍,我们可以了解到不同类型的数据库具有不同的连接语句。正确配置这些连接参数对于成功建立数据库连接至关重要。此外,随着技术的发展,许多现代框架和工具(如 Spring Boot)提供了更为简化的...

Global site tag (gtag.js) - Google Analytics