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
- @throws SQLException
*/
public static void releaseSourse(Connection conn) throws SQLException {
if (conn != null) {
conn.close();
}
}
/**
- 釋放連接的方法
- @param conn 數據庫連接對象
- @param stmt 執行SQL語句的對象
-
@throws SQLException
*/
public static void releaseSourse(Connection conn,Statement stmt) throws SQLException {
if (stmt != null) {
stmt.close();
}if (conn != null) {
conn.close();
}
}
/**
- 釋放連接的方法
- @param conn 數據庫連接對象
- @param stmt 執行SQL語句的對象
- @param resultSet 執行SQL語句的返回的結果集
-
@throws SQLException
*/
public static void releaseSourse(Connection conn,Statement stmt,ResultSet resultSet) throws SQLException {
if (resultSet != null) {
resultSet.close();
}if (stmt != null) {
stmt.close();
}if (conn != null) {
conn.close();
}
}
}
測試類代碼:
package com.qianfeng.demos;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
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"); /* String url = "jdbc:mysql://localhost:3306/class?useSSL=false"; String user = "root"; String password = "root"; // 獲取和數據庫的連接 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();
}
}