天天看點

java技術案例--封裝JDBC工具類

JDBC簡介

- JDBC(Java DataBase Connectivity,java資料庫連接配接)是一種用于執行SQL語句的Java API,可以為多種關系資料庫提供統一通路,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據此可以建構更進階的工具和接口,使資料庫開發人員能夠編寫資料庫應用程式

- Java 具有堅固、安全、易于使用、易于了解和可從網絡上自動下載下傳等特性,是編寫資料庫應用程式的傑出語言。所需要的隻是 Java應用程式與各種不同資料庫之間進行對話的方法。

- JDBC可以在各種平台上使用Java,如Windows,Mac OS和各種版本的UNIX。

- JDBC庫包括通常與資料庫使用相關的下面提到的每個任務的API。

JDBC實作驗證登入代碼思路

 * 鍵盤輸入使用者名和密碼,對比資料庫中的使用者資訊,判斷是否登入成功

 *     1、連接配接資料庫

 *         MyJDBCUtils.getConnection()

 *     2、擷取請求對象stmt

 *         conn.createStmtement()

*     3、建立鍵盤對象,擷取使用者名和密碼

*         3.1    建立鍵盤錄入對象

*         3.2    提示使用者輸入

*         3.3    擷取使用者輸入内容

*     4、編寫SQL語句,把使用者名和密碼放入SQL語句中

*     5、執行查詢,擷取查詢結果

*         stmt.executeQuery(sql);

*     6、根據查詢結果判斷登入是否成功

*     7、關閉連接配接

Java工具類

在java開發過程中,代碼中時常用到一些Scanner、Random一樣的類,他們是鍵盤錄入,生成随機數的類,像一個工具一樣,在java中被稱為工具類。

         我們在編寫自己的代碼時,有的代碼功能和java工具類似,比如連接配接資料庫、驗證登入,時長會用得到,每次都書寫一次太麻煩,我們可以嘗試編寫自己的工具類,每次用到的時候直接導包調用就行,能提高我們的開發效率。

封裝JDBC工具類

加入擷取資料庫連接配接對象的方法

加入釋放連接配接的方法

代碼如下:

工具類代碼:

package com.qianfeng.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

/**

 * JDBC工具類

 * 有擷取連接配接的方法

 * @author dushine

 */

public class JDBCUtil {

         /**

          * 擷取資料庫連接配接的方法

          * @return Connection conn

          * @throws SQLException

          */

         public static Connection getConnection() throws SQLException {

                   String url = "jdbc:mysql://localhost:3306/class?useSSL=false";

                   String user = "root";

                   String password = "root";

                   Connection conn = DriverManager.getConnection(url,user,password);

                   return conn;

         }

          * 釋放連接配接的方法

          * @param conn

         public static void releaseSourse(Connection conn) throws SQLException {

                   if (conn != null) {

                            conn.close();

                   }

          * @param conn               資料庫連接配接對象

          * @param stmt               執行SQL語句的對象

         public static void releaseSourse(Connection conn,Statement stmt) throws SQLException {

                   if (stmt != null) {

                            stmt.close();

          * @param resultSet       執行SQL語句的傳回的結果集

         public static void releaseSourse(Connection conn,Statement stmt,ResultSet resultSet) throws SQLException {

                   if (resultSet != null) {

                            resultSet.close();

}

測試類代碼:

package com.qianfeng.demos;

import java.util.Scanner;

import com.qianfeng.util.JDBCUtil;

public class Demo04 {

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

                   /**

                    * 登入注冊

                    *   擷取使用者輸入内容

                    *   把輸入的内容當做條件查詢資料庫中的内容

                    */

                   Scanner sc = new Scanner(System.in);

                   System.out.println("請輸入使用者名:");

                   String name = sc.nextLine();

                   System.out.println("請輸入密碼:");

                   String pwd = sc.nextLine();

                   // 注冊驅動

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

                   /*

                   // 擷取和資料庫的連接配接

                   Connection conn = DriverManager.getConnection(url, user, password);*/

                   Connection conn = JDBCUtil.getConnection();

                   // 使用連接配接對象擷取執行sql的對象

                   Statement stmt = conn.createStatement();

                   // 編寫SQL語句

                   String sql = "select * from userinfo where username='"+name+"' and password='"+pwd+"'";

                   System.out.println(sql);

                   // 執行SQL語句,擷取傳回結果

                   ResultSet resultSet = stmt.executeQuery(sql);

                   if (resultSet.next()) {

                            System.out.println("登陸成功!");

                   } else {

                            System.out.println("使用者名或密碼錯誤!");

                   JDBCUtil.releaseSourse(conn, stmt, resultSet);

                   sc.close();