我在 setString
方面遇到问题。当我将 %
添加到 setString
中的参数时,即使我不写任何东西它也会起作用。但是,当我删除它时,它不起作用。有人可以帮忙吗?
String Id= User1.getText().toString();
String Passwords = Pass.getText().toString();
btnlogin.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String query = "SELECT * FROM TABLE WHERE id LIKE ? AND pass LIKE ? ";
try {
if (connect != null) {
PreparedStatement statement = connect.prepareStatement(query);
statement.setString(1, Id ); // statement.setString(1 ,"%" + Id + "%");
statement.setString(2 ,Passwords);// statement.setString(2 ,"%" + Passwords + "%");
r = statement.executeQuery();
if (r.next()){
Intent intent = new Intent();
intent.setClass(Login.this, MainActivity.class);
startActivity(intent);
}
else {
message = "Error";
info.setText(message);
}
} else {
message = "Error in connection with SQL server";
info.setText(message);
}
} catch (SQLException e) {
etat = false;
message = "Got an exception!";
System.err.println(e.getMessage());
}
}}); }
PS:我没有收到任何错误
最佳答案
那是因为您的 SQL 查询需要类似的语法。
如果您不想使用%%
,请传递直接字符串并将LIKE查询更改为=
查询。
SELECT * FROM TABLE WHERE id = ? AND pass = ?
但是使用 like 运算符检查用户名和密码是一个糟糕的主意。始终检查它们是否相等。
关于java - 准备好的语句和setString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45793243/