Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java netbeans的SQL异常,can';我似乎找不到原因_Java_Netbeans_Mysql Workbench - Fatal编程技术网

java netbeans的SQL异常,can';我似乎找不到原因

java netbeans的SQL异常,can';我似乎找不到原因,java,netbeans,mysql-workbench,Java,Netbeans,Mysql Workbench,我正在尝试从java netbeans更新MySql workbench中的数据库,但似乎找不到此异常的根本原因 java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2). 这些数字似乎相符。。。但指数总是超出范围 这是我的代码片段。任何帮助都将不胜感激 pstmt = conn.prepareStatement ("UPDATE studentid.sinfoa

我正在尝试从java netbeans更新MySql workbench中的数据库,但似乎找不到此异常的根本原因

java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
这些数字似乎相符。。。但指数总是超出范围 这是我的代码片段。任何帮助都将不胜感激

 pstmt = conn.prepareStatement ("UPDATE studentid.sinfoafter SET username = ?, password = ?, snumber# = ?, fullname = ?, email = ?, phone# = ?, status = ? WHERE username = ?");
            pstmt.setString (1, selected.getUsername ());
            pstmt.setString (2, selected.getPassword ());
            pstmt.setInt (3, selected.getsId ());
            pstmt.setString (4, selected.getFullName ());
            pstmt.setString (5, selected.getEmail ());
            pstmt.setInt (6, selected.getPhone ());
            pstmt.setInt (7, selected.getStatus ());
            pstmt.setString (8, selected.getUsername ());
            pstmt.executeUpdate ();
            conn.close ();```


您应该转义
WHERE子句上的值

pstmt = conn.prepareStatement ("UPDATE studentid.sinfoafter SET username = ?, password = ?, snumber# = ?, fullname = ?, email = ?, phone# = ?, status = ? WHERE username = '?'");

如果不是,SQL认为您希望获取列
username
与名为
exampleUsername
的不存在列具有相同值的所有行,因此它抛出了一个语法错误。

我有点担心以
结尾的字段,比如
snumber
,这可能是一个原因。请您尝试转义它们,比如在mysql中使用
snumber
?SQL server上的表是否包含所有必需的列?另外,试着打印语句,看看它是否被正确构建。@MikhailKopylov嗨,我已经为以#结尾的字段添加了周围的倒勾`并再次运行了我的程序,这次没有异常,但sql数据库仍然没有更新…奇怪。我会尽量打印出像@PauMAVA这样的语句said@PauMAVA您好,我已经打印出构建的字符串,并使用语句方法st.executeUpdate(sql)执行它。我打印了sql语句以查看它是如何构建的,它显示如下:updatestudentid.sinfoafter SET username=exampleUsername,password=jPasswordField1,snumber=101,fullname=exampleName,email=exampleEmail,phone=12345678,status=1其中username=exampleUsername现在错误显示:java.sql.SQLSyntaxErrorException:WHERE子句中的未知列“exampleUsername”。exampleUsername是列数据…发生这种情况是因为您没有在
上转义值
exampleUsername
。。。其中username=示例username
。然后SQL将尝试查找名为exampleUsername的列,该列不存在。解决方案是:
。。。其中username='exampleUsername'