溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JDBC怎么實(shí)現(xiàn)驗(yàn)證登錄

發(fā)布時(shí)間:2021-12-22 14:12:06 來(lái)源:億速云 閱讀:258 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹“JDBC怎么實(shí)現(xiàn)驗(yàn)證登錄 ”,在日常操作中,相信很多人在JDBC怎么實(shí)現(xiàn)驗(yàn)證登錄 問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”JDBC怎么實(shí)現(xiàn)驗(yàn)證登錄 ”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

JDBC(Java DataBase Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問,它由一組用Java語(yǔ)言編寫的類和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開發(fā)人員能夠編寫數(shù)據(jù)庫(kù)應(yīng)用程序- Java 具有堅(jiān)固、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動(dòng)下載等特性,是編寫數(shù)據(jù)庫(kù)應(yīng)用程序的杰出語(yǔ)言。所需要的只是 Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話的方法。- JDBC可以在各種平臺(tái)上使用Java,如Windows,Mac OS和各種版本的UNIX。- JDBC庫(kù)包括通常與數(shù)據(jù)庫(kù)使用相關(guān)的下面提到的每個(gè)任務(wù)的API。

JDBC實(shí)現(xiàn)驗(yàn)證登錄 

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

- 連接數(shù)據(jù)庫(kù)。- 把用戶輸入的用戶名和密碼當(dāng)做查詢條件寫入sql語(yǔ)句-  執(zhí)行查詢,獲取查詢結(jié)果 - 根據(jù)查詢結(jié)果判定用戶輸入的賬號(hào)和密碼是否正確

驗(yàn)證登錄代碼思路

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

 *         MyJDBCUtils.getConnection()

 *     2、獲取請(qǐng)求對(duì)象stmt

 *         conn.createStmtement()

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

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

*         3.2    提示用戶輸入

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

*     4、編寫SQL語(yǔ)句,把用戶名和密碼放入SQL語(yǔ)句中

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

*         stmt.executeQuery(sql);

*     6、根據(jù)查詢結(jié)果判斷登錄是否成功*     7、關(guān)閉連接

JDBC實(shí)現(xiàn)登錄驗(yà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("請(qǐng)輸入用戶名:");

String name = sc.nextLine();

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

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();

}

}

運(yùn)行代碼后我們正常輸入類似:

用戶名:zhangsan    密碼:sanzhang

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

如果有用戶輸入類似:

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

這樣的內(nèi)容時(shí),即便是錯(cuò)誤的結(jié)果也會(huì)驗(yàn)證通過(guò),因?yàn)镾QL語(yǔ)句被編寫成了:select * from userinfo where username=’’ and password=’’ or ‘1’=’1’;

這樣驗(yàn)證的結(jié)果總是正確的,這種情況我們稱之為SQL注入

到此,關(guān)于“JDBC怎么實(shí)現(xiàn)驗(yàn)證登錄 ”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問一下細(xì)節(jié)

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

AI