溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

好程序員Java學習路線分享JDBC初體驗

發(fā)布時間:2020-07-19 03:15:32 來源:網(wǎng)絡 閱讀:158 作者:wx5d42865f47214 欄目:編程語言

  好程序員Java學習路線分享JDBC初體驗,JDBC(Java DataBase Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據(jù)此可以構建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應用程序

-?Java 具有堅固、安全、易于使用、易于理解和可從網(wǎng)絡上自動下載等特性,是編寫數(shù)據(jù)庫應用程序的杰出語言。所需要的只是 Java應用程序與各種不同數(shù)據(jù)庫之間進行對話的方法。

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

-?JDBC庫包括通常與數(shù)據(jù)庫使用相關的下面提到的每個任務的API。

JDBC實現(xiàn)驗證登錄?

-?創(chuàng)建Scanner對象,提示并獲取獲取用戶輸入用戶名和密碼

-?連接數(shù)據(jù)庫。

  • 把用戶輸入的用戶名和密碼當做查詢條件寫入sql語句
    -? 執(zhí)行查詢,獲取查詢結果
  • 根據(jù)查詢結果判定用戶輸入的賬號和密碼是否正確

驗證登錄代碼思路

??鍵盤輸入用戶名和密碼,對比數(shù)據(jù)庫中的用戶信息,判斷是否登錄成功
?
?????1、連接數(shù)據(jù)庫

?*?????????MyJDBCUtils.getConnection()

?*?????2、獲取請求對象stmt

?*?????????conn.createStmtement()

*?????3、創(chuàng)建鍵盤對象,獲取用戶名和密碼

*?????????3.1????創(chuàng)建鍵盤錄入對象

*?????????3.2????提示用戶輸入

*?????????3.3????獲取用戶輸入內(nèi)容

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

*?????5、執(zhí)行查詢,獲取查詢結果

*?????????stmt.executeQuery(sql);

?????6、根據(jù)查詢結果判斷登錄是否成功
?????7、關閉連接

JDBC實現(xiàn)登錄驗證案例代碼

package com.qf.demos;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;

public class Demo05 {

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

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

????????String user = "root";

????????String password = "root";

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

????????Statement stmt = conn.createStatement();

????????

????????Scanner sc = new Scanner(System.in);

????????System.out.println("請輸入用戶名:");

????????String name = sc.nextLine();

????????

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

????????String pwd = sc.nextLine();

????????

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

????????// String sql = "select * from user where username='zhangsan' and password='lisi' or '1'='1'";

????????ResultSet resultSet = stmt.executeQuery(sql);

????????System.out.println(resultSet);

????????

????????if (resultSet.next()) {

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

????????} else {

????????????System.out.println("用戶名或密碼!");

????????}

????????resultSet.close();

????????stmt.close();

????????conn.close();

????????sc.close();

????}

}

運行代碼后我們正常輸入類似:

用戶名:zhangsan ???密碼:sanzhang

這樣的用戶名和密碼,獲取到的內(nèi)容可以和數(shù)據(jù)庫中的內(nèi)容對比,得到對應的結果

如果有用戶輸入類似:

用戶名:zhangsan 密碼:sansan’or ‘1’=’1

這樣的內(nèi)容時,即便是錯誤的結果也會驗證通過,因為SQL語句被編寫成了:select *?from userinfo where username=’’ and password=’’ or ‘1’=’1’;

這樣驗證的結果總是正確的,這種情況我們稱之為SQL注入

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI