Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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_Sql - Fatal编程技术网

Java 关于重复键语法错误

Java 关于重复键语法错误,java,sql,Java,Sql,我正在创建一个在线投票系统,所有用户的投票都存储在一个数据库中。我想避免重复。例如,假设用户X对问题A投B票。此信息将添加到数据库中。一周后,同一个用户X决定对同一个问题A投C票。因此,与其在数据库中添加另一个条目,不如用新信息更新旧条目。我尝试使用ON replicate KEY UPDATE查询,但遇到了一个非常奇怪的语法异常: java.sql.SQLSyntaxErrorException:语法错误:在第1行第53列遇到“ON” 代码: 我必须说我对SQL语句和数据库相当陌生,所以我的查

我正在创建一个在线投票系统,所有用户的投票都存储在一个数据库中。我想避免重复。例如,假设用户X对问题A投B票。此信息将添加到数据库中。一周后,同一个用户X决定对同一个问题A投C票。因此,与其在数据库中添加另一个条目,不如用新信息更新旧条目。我尝试使用ON replicate KEY UPDATE查询,但遇到了一个非常奇怪的语法异常:

java.sql.SQLSyntaxErrorException:语法错误:在第1行第53列遇到“ON”

代码:


我必须说我对SQL语句和数据库相当陌生,所以我的查询可能从一开始就错了。但例外情况相当奇怪

Derby没有关于重复密钥更新的
语句

您应该能够使用
MERGE

文档。

适当的注释:您不能在Derby中使用通用的MySQL语法。如果要使用MySQL语法,请安装MySQL驱动程序。
public void castVote(int id, String username, String option) {

    try {

        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        connection = DriverManager
                .getConnection("jdbc:derby:C:\\MyDB;create=true;upgrade=true");
        String query = "INSERT INTO Votes (id, username, op) " + "VALUES (?,?,?) "
                + "ON DUPLICATE KEY UPDATE " + "id = ?, username = ?, op = ?";
        preparedStatement = connection.prepareStatement(query);
        preparedStatement.setInt(1, id);
        preparedStatement.setString(2, username);
        preparedStatement.setString(3, option);
        preparedStatement.executeUpdate();

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        close();
    }
}