预准备语句和 setString



我对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());
}

}});  }

附言:我没有收到任何错误

这是因为您的SQL查询正在乞求语法。

如果不想使用%%,则传递直接字符串并将 LIKE 查询更改为=查询。

SELECT * FROM TABLE WHERE id = ? AND pass = ?

但是使用类似的运算符检查用户名和密码是一个糟糕的主意。始终检查它们是否相等。

最新更新