我对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());
}
}}); }
P.S:我没有错误
答案 0 :(得分:2)
这是因为你的SQL查询正在乞求类似语法。
如果您不想使用%%
,请传递直接字符串并将LIKE查询更改为=
查询。
SELECT * FROM TABLE WHERE id = ? AND pass = ?
但是使用like运算符检查用户名和密码是个糟糕的主意。始终检查它们是否等于。