Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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数据库“插入到”语法错误_Java_Database_Sqlanywhere_Insert Into - Fatal编程技术网

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

在我的java程序中,我试图仅在不存在的情况下将用户插入数据库,但无论如何,当我插入java捕获异常时。这是密码

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。我应该如何编写查询?那么我应该如何编写查询?