Java 尝试使用executeUpdate发出数据操作语句时出错
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误; 查看与MySQL服务器版本对应的手册,以了解在第1行的“firstName”、“lastName”、“email”、“address”、“userName”、“password”)值(“nu”)附近使用的正确语法 当我运行gui向表中输入数据时,出现上述错误Java 尝试使用executeUpdate发出数据操作语句时出错,java,mysql,sql,exception,Java,Mysql,Sql,Exception,com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误; 查看与MySQL服务器版本对应的手册,以了解在第1行的“firstName”、“lastName”、“email”、“address”、“userName”、“password”)值(“nu”)附近使用的正确语法 当我运行gui向表中输入数据时,出现上述错误 我正在使用下面的代码您在您的声明的最后部分缺少了“。您的声明应该是: PreparedStatem
我正在使用下面的代码您在您的声明的最后部分缺少了
“
。您的声明应该是:
PreparedStatement statement =
conn.prepareStatement("INSERT INTO person ('firstName', 'lastName', 'email',
'address', 'userName', 'password') "
+ "VALUES ('" + first + "', '" + last + "', '" + email + "',
'" + address + "', '" + username + "', '" + password + "')");
在执行之前,请尝试以下方式查看查询,以找出错误:
public void Create(String first, String last, String email, String address, String username, String password) {
Connection conn = null;
PreparedStatement statement = null;
try {
Class.forName(JDBC_DRIVER).newInstance();
conn = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD);
StringBuilder query = new StringBuilder("INSERT INTO person(firstName, lastName, email, address, userName, password) VALUES(")
.append("'").append(first).append("',")
.append("'").append(last).append("',")
.append("'").append(email).append("',")
.append("'").append(address).append("',")
.append("'").append(username).append("',")
.append("'").append(password).append("'")
.append(")");
System.out.println( query.toString());
statement = conn.prepareStatement( query.toString() );
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (statement != null) {
statement.close();
}
if (conn != null) {
conn.close();
}
}
}
您可以按如下方式更改submitButton函数:
//action listeners for Login in button and menu item
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String fName = jtfFname.getText();
String lName = jtfLname.getText();
String email = jtfEmail.getText();
String address = jtfAddress1.getText();
String username = jtfUsername.getText();
String password = jtfPassword.getText();
Create(fName , lName, email, address, username, password);
}
});
不要以这种方式使用prepared语句。您的代码容易受到SQL注入的攻击。
以这种方式使用准备好的语句:
PreparedStatement statement = conn.prepareStatement(
"INSERT INTO person (firstName, lastName, email, address, userName, password) "
+ "VALUES (? , ?, ?, ?, ?, ?)";
statement.setString( 1, first);
statement.setString( 2, last );
statement.setString( 3, email );
statement.setString( 4, address );
statement.setString( 5, username );
statement.setString( 6, password );
statement.executeUpdate();
这也防止了诸如省略撇号之类的愚蠢错误。下面是一个教程
如何使用PreparedStatement
:去掉firstName、lastName等周围的单引号。我想David的意思是,去掉列名周围的单引号;)密码值旁边缺少撇号:“+password+”)");代码>嘿,这已经修复了它,但是当它操作表时,插入的值都是空的。为此干杯,我如何使它使我的gui能够实现这一点。只需将此示例复制并粘贴到您的代码中,它就会起作用。嘿干杯,我如何用我的gui实现这一点以获得jtextfields?根据您的要求进行修改,看起来正确,我只是想把这个代码添加到我的。。不确定如何删除。删除定义:字符串开头、结尾、电子邮件、地址、用户名、密码;将submitButton操作替换为提供的操作,将create函数实现替换为提供的操作。。。让我把它完成,因为您似乎工作得很好,只是在使用语句时遇到了问题。close()代码>