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我不知道为什么它不起作用