Java数据库“插入到”语法错误
在我的java程序中,我试图仅在不存在的情况下将用户插入数据库,但无论如何,当我插入java捕获异常时。这是密码Java数据库“插入到”语法错误,java,database,sqlanywhere,insert-into,Java,Database,Sqlanywhere,Insert Into,在我的java程序中,我试图仅在不存在的情况下将用户插入数据库,但无论如何,当我插入java捕获异常时。这是密码 public void UserToDB(Registered registered) throws SQLException{ Connection conn = SimpleDataSource.getConnection(); try { PreparedStatement stat = conn.prepareStatement("INSERT I
public void UserToDB(Registered registered) throws SQLException{
Connection conn = SimpleDataSource.getConnection();
try
{
PreparedStatement stat = conn.prepareStatement("INSERT INTO User(ID,Email,Name,LastName,Password) VALUES(?,?,?,?,?)"
+ "WHERE NOT EXISTS (SELECT * from User WHERE Email = ?)");
stat.setInt(1,registered.getId());
stat.setString(2,registered.getEmail());
stat.setString(3,registered.getName());
stat.setString(4,registered.getLastName());
stat.setString(5,registered.getPassword());
stat.setString(6,registered.getEmail());
stat.executeUpdate();
}catch(SQLException e){
System.out.println("Error: Email already exists");
}
finally
{
conn.close();
}
}
堆栈跟踪:
线程main com.mysql.jdbc.exceptions.MySQLSyntaxErrorException异常:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“WHERE NOT EXISTS SELECT*from User WHERE Email=”附近使用的正确语法4444@hotmail.com在1号线
位于com.mysql.jdbc.SQLError.createSQLExceptionSQLError.java:936
位于com.mysql.jdbc.MysqlIO.checkErrorPacketMysqlIO.java:2985
位于com.mysql.jdbc.MysqlIO.sendCommandMysqlIO.java:1631
位于com.mysql.jdbc.MysqlIO.sqlQueryDirectMysqlIO.java:1723
位于com.mysql.jdbc.Connection.execSQLConnection.java:3283
位于com.mysql.jdbc.PreparedStatement.executeInternalPreparedStatement.java:1332
位于com.mysql.jdbc.PreparedStatement.executeUpdatePreparedStatement.java:1604
位于com.mysql.jdbc.PreparedStatement.executeUpdatePreparedStatement.java:1519
位于com.mysql.jdbc.PreparedStatement.executeUpdatePreparedStatement.java:1504
在social_network.DBManager.usertodbbmanager.java:51
在social_network.social_network.mainSocial_network.java:36
如何修复?插入到不支持WHERE子句。因此,问题实际上与EXISTS子句无关
其中是用于筛选行的。您不想筛选行。您想插入行。在我看来,您实际上想要做的是基于给定电子邮件值的存在在用户表中插入行。为此,请检查MERGE-INTO语句。Insert语句不支持where子句。。请尝试使用joints堆栈跟踪:顺便说一句,您同时抛出和捕获异常?您的主键和唯一键是什么?insert语句没有where条件。我的主键是电子邮件和IDso。我应该如何编写查询?那么我应该如何编写查询?