Java 准备好的语句和集合字符串
我对Java 准备好的语句和集合字符串,java,sql,jdbc,prepared-statement,Java,Sql,Jdbc,Prepared Statement,我对setString有问题。当我将%添加到setString中的参数时,即使我不写任何东西,它也会工作。但是,当我移除它时,它不起作用。有人能帮忙吗 String Id= User1.getText().toString(); String Passwords = Pass.getText().toString(); btnlogin.setOnClickListener(new View.OnClickListener() { public void onClic
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 query更改为=
查询
SELECT * FROM TABLE WHERE id = ? AND pass = ?
但是用like操作符检查用户名和密码是一个糟糕的主意。始终检查它们是否相等。我以前尝试过将Like替换为=,但无效。您可以粘贴最终形成的sql查询吗?@Mimi如果您的数据或输入有问题,请检查它们并确保使用了正确的信息,从您的分享中,我们了解到这是您的正确答案problem@SURESHString query=“从id=?和pass=?”的表中选择*”;请尝试{if(connect!=null){PreparedStatement statement=connect.prepareStatement(查询);statement.setString(1,Id);statement.setString(2,密码);r=statement.executeQuery();“TABLE”是表的允许名称吗?可能是字符编码问题吗?@Maurice我不知道为什么它不起作用