第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

驗(yàn)證用戶 Mysql Java?

驗(yàn)證用戶 Mysql Java?

素胚勾勒不出你 2022-11-30 16:09:20
我用這個(gè)開(kāi)發(fā)做了這個(gè)查詢但是我在接收 API 時(shí)遇到問(wèn)題我嘗試驗(yàn)證用戶登錄但總是 API RESPONSE LOGIN SUCCESS我用 Java Spring Boot 和 Mysql 做了這個(gè)這是我的代碼:@Overridepublic List<UserDto> getUsers() {    List<UserDto> list = new ArrayList<UserDto>();    try {        Connection con = getConnection();        PreparedStatement ps = con.prepareStatement("Select * from tableregister");        ResultSet rs = ps.executeQuery();        while (rs.next()) {            UserDto data = new UserDto();            data.setName(rs.getString("name"));            data.setLastname(rs.getString("lastname"));            data.setEmail(rs.getString("email"));            data.setUsername(rs.getString("username"));            data.setNumber(rs.getString("number"));            data.setPassword(rs.getString("password"));            list.add(data);        }    } catch (Exception e) {        e.printStackTrace();    }    return list;}我先做了這個(gè)@Overridepublic ApiResponseDto getlogin(UserDto usersLogin) {  try{       Connection con = getConnection();       Statement st=con.createStatement();       ResultSet rs=st.executeQuery("select * from tableregister where username='"+usersLogin.getUsername()+"' and password='"+usersLogin.getPassword()+"'");       if (usersLogin.getUsername() != null && usersLogin.getPassword() != null) {           return new ApiResponseDto("Success", "Login: ");       } else {           ApiResponseDto apiResponseDto = new ApiResponseDto("Error", "Error Login");           apiResponseDto.setErrorCode(2);           return apiResponseDto;       }   } catch (Exception e) {       e.printStackTrace();       return new ApiResponseDto("Error", "Error: " + e.toString());   }}
查看完整描述

2 回答

?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

您分享的兩個(gè)片段都是錯(cuò)誤的。

在第一個(gè)片段中,您執(zhí)行了一個(gè)查詢(順便說(shuō)一句,由于字符串連接,該查詢?nèi)菀资艿?SQL 注入的攻擊),但忽略其結(jié)果并僅檢查作為參數(shù)傳遞的對(duì)象。

在第二個(gè)片段中,您再次執(zhí)行查詢,但忽略結(jié)果,從數(shù)據(jù)庫(kù)中獲取所有用戶,并檢查他們是否存在。

相反,您需要根據(jù)傳遞的參數(shù)進(jìn)行查詢,并檢查查詢是否返回了任何結(jié)果:

@Override

public ApiResponseDto getlogin(UserDto usersLogin) {

    try {

        // Assumption: The connection is pooled, and doesn't require closing.

        Connection con = getConnection();

        try (Preparestament ps = con.preparestament("select * from tableregister where username = ? and password = ?") {

            ps.setString(1, usersLogin.getUsername());

            ps.setString(2, userLoging.getPassword());

            try (ResultSet rs = ps.executeQuery()) {

                if (rs.next()) {

                   return new ApiResponseDto("Success", "Login Success");

                } else {

                    ApiResponseDto obj = new ApiResponseDto("Error", "Error Login");

                    obj.setErrorCode(1);

                    return obj;

                }

            }

        }

    } catch (Exception e) {

        e.printStackTrace(); // Or log the error somehow

        return new ApiResponseDto("Error", "Error: " + e.toString());

    }

}

PS:

請(qǐng)注意,在您的兩個(gè)代碼段中,您都沒(méi)有正確關(guān)閉 JDBC 對(duì)象,從而導(dǎo)致泄漏。這可以使用 try-with-resource 語(yǔ)法相對(duì)巧妙地完成。


查看完整回答
反對(duì) 回復(fù) 2022-11-30
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

您需要檢查結(jié)果集。您可以這樣做。


ResutSet rs = st.executeQuery....

if(rs.next()) {

  String username = r.getUserName();

  ...

}


查看完整回答
反對(duì) 回復(fù) 2022-11-30
  • 2 回答
  • 0 關(guān)注
  • 114 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)