Java 为什么这个SQL语句会导致错误?
我对此非常生气,所以我向人群寻求帮助;) 我想做的是:我们有一个统一学习游戏,它将实现一个登录窗口。然后对输入的凭证进行散列(pw是)并发送到服务器,然后服务器应根据数据库进行检查 我有下表: xy.U使用以下立柱进行确认: id用户名电子邮件密码哈希代码已创建 为什么我的代码Java 为什么这个SQL语句会导致错误?,java,sql,phpmyadmin,Java,Sql,Phpmyadmin,我对此非常生气,所以我向人群寻求帮助;) 我想做的是:我们有一个统一学习游戏,它将实现一个登录窗口。然后对输入的凭证进行散列(pw是)并发送到服务器,然后服务器应根据数据库进行检查 我有下表: xy.U使用以下立柱进行确认: id用户名电子邮件密码哈希代码已创建 为什么我的代码 String sql = "SELECT " + "xy.users_confirms.password as pwhash, " +"FROM xy.users_conf
String sql = "SELECT " + "xy.users_confirms.password as pwhash, "
+"FROM xy.users_confirms " +"WHERE xy.users_confirms.username = " +"\"userNameToGetHashFor\"";
引导我找到SQLException“参数索引超出范围(1>参数数量,即0)”
?
谢谢,非常感谢您的任何意见 试试这个:
String parameter = "'"+ strNameToGetHashFor + "'";
String sql = "SELECT " + "xy.users_confirms.password as pwhash, "
+"FROM xy.users_confirms "
+"WHERE xy.users_confirms.username ="+ parameter;
您正在使用
varchar
值作为参数,因此它必须是这样的引号。用户名'
。或者您可以使用。试试这个:
String parameter = "'"+ strNameToGetHashFor + "'";
String sql = "SELECT " + "xy.users_confirms.password as pwhash, "
+"FROM xy.users_confirms "
+"WHERE xy.users_confirms.username ="+ parameter;
您正在使用
varchar
值作为参数,因此它必须是这样的引号。用户名'
。或者您可以使用。试试这个:
String parameter = "'"+ strNameToGetHashFor + "'";
String sql = "SELECT " + "xy.users_confirms.password as pwhash, "
+"FROM xy.users_confirms "
+"WHERE xy.users_confirms.username ="+ parameter;
您正在使用
varchar
值作为参数,因此它必须是这样的引号。用户名'
。或者您可以使用。试试这个:
String parameter = "'"+ strNameToGetHashFor + "'";
String sql = "SELECT " + "xy.users_confirms.password as pwhash, "
+"FROM xy.users_confirms "
+"WHERE xy.users_confirms.username ="+ parameter;
您正在使用
varchar
值作为参数,因此它必须是这样的引号。用户名'
。或者您也可以使用。我个人会尝试直接在phpmyadmin中使用自定义查询框来获取一个工作查询。一旦有了一个工作查询,就可以用java重新编写它
我会尝试将如下语法写入phpmyadmin查询框:
SELECT password as pwhash
FROM xy.users_confirms
WHERE username ='userNameToGetHashFor'
使用上述语法,我看不出您的错误会继续存在
显示自定义查询框的Phpmyadmin屏幕帽:
(screen cap中的两个空文本框只是我隐藏了我的数据库信息)就我个人而言,我会尝试直接在phpmyadmin中使用自定义查询框获取一个工作查询。一旦有了一个工作查询,就可以用java重新编写它 我会尝试将如下语法写入phpmyadmin查询框:
SELECT password as pwhash
FROM xy.users_confirms
WHERE username ='userNameToGetHashFor'
使用上述语法,我看不出您的错误会继续存在
显示自定义查询框的Phpmyadmin屏幕帽:
(screen cap中的两个空文本框只是我隐藏了我的数据库信息)就我个人而言,我会尝试直接在phpmyadmin中使用自定义查询框获取一个工作查询。一旦有了一个工作查询,就可以用java重新编写它 我会尝试将如下语法写入phpmyadmin查询框:
SELECT password as pwhash
FROM xy.users_confirms
WHERE username ='userNameToGetHashFor'
使用上述语法,我看不出您的错误会继续存在
显示自定义查询框的Phpmyadmin屏幕帽:
(screen cap中的两个空文本框只是我隐藏了我的数据库信息)就我个人而言,我会尝试直接在phpmyadmin中使用自定义查询框获取一个工作查询。一旦有了一个工作查询,就可以用java重新编写它 我会尝试将如下语法写入phpmyadmin查询框:
SELECT password as pwhash
FROM xy.users_confirms
WHERE username ='userNameToGetHashFor'
使用上述语法,我看不出您的错误会继续存在
显示自定义查询框的Phpmyadmin屏幕帽:
(screen cap中的两个空文本框只是我隐藏了我的数据库信息)pwhash后面的逗号是一个潜在原因:
+ "xy.users_confirms.password as pwhash*!*,*!* "
根据DBMS的不同,您可能还需要使用单引号而不是双引号,如下所示:
+ "'userNameToGetHashFor'";
此外,此代码可能容易受到SQL注入攻击,因此您可能希望将UsernameTogethash设置为参数,而不是将字符串连接到SQL语句中。pwhash后面的逗号是一个潜在原因:
+ "xy.users_confirms.password as pwhash*!*,*!* "
根据DBMS的不同,您可能还需要使用单引号而不是双引号,如下所示:
+ "'userNameToGetHashFor'";
此外,此代码可能容易受到SQL注入攻击,因此您可能希望将UsernameTogethash设置为参数,而不是将字符串连接到SQL语句中。pwhash后面的逗号是一个潜在原因:
+ "xy.users_confirms.password as pwhash*!*,*!* "
根据DBMS的不同,您可能还需要使用单引号而不是双引号,如下所示:
+ "'userNameToGetHashFor'";
此外,此代码可能容易受到SQL注入攻击,因此您可能希望将UsernameTogethash设置为参数,而不是将字符串连接到SQL语句中。pwhash后面的逗号是一个潜在原因:
+ "xy.users_confirms.password as pwhash*!*,*!* "
根据DBMS的不同,您可能还需要使用单引号而不是双引号,如下所示:
+ "'userNameToGetHashFor'";
此外,此代码可能容易受到SQL注入攻击,因此您可能希望将用户名设置为参数,而不是将字符串连接到SQL语句中。我想知道来自的
phash、
和之前的逗号是否会导致此问题。话虽如此,您应该使用一个preprepred语句
。请参阅以了解更多详细信息。很抱歉,字符串sql随后使用PreparedStatement=connection.prepareStatement(sql)进行准备;我想知道
中phash、
之后和之前的逗号是否会引起问题。话虽如此,您应该使用一个preprepred语句
。请参阅以了解更多详细信息。很抱歉,字符串sql随后使用PreparedStatement=connection.prepareStatement(sql)进行准备;我想知道
中phash、
之后和之前的逗号是否会引起问题。话虽如此,您应该使用一个preprepred语句
。请参阅以了解更多详细信息。很抱歉,字符串sql随后使用PreparedStatement=connection.prepareStatement(sql)进行准备;我想知道
中phash、
之后和之前的逗号是否会引起问题。话虽如此,您应该使用一个preprepred语句
。请参阅以了解更多详细信息。很抱歉,字符串sql随后使用PreparedStatement=connection.prepareStatement(sql)进行准备;是的,没错。这绝对是单引号。但是,即使该语句在phpMyAdmin中工作,它还是通过Java工作的……是的,没错。这绝对是单引号。但是性病