java - 准备好的语句和setString

标签 java sql jdbc prepared-statement

我在 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/

相关文章:

java - 使用motionevents模拟鼠标点击

php - 创建类别树的最佳方法

mysql - 编号状态的条件聚合

java - 智能逻辑查询 PostgreSQL 函数内部的性能

java - BufferedInputStream.read(byte[] b, int off, int len) 可以返回 0 吗?是否有可能导致这种情况的重要的、损坏的 InputStreams?

java - 无法从tomcat中自定义类加载器加载的类中获取注释

java - 连接身份验证失败JDBC

php - 数据库错误: MySQL Error Number: 1064

java - 有 2 个对象的PreparedStatement 中没有结果 "In"子句

java - 搜索查询性能?