【发布时间】:2013-09-12 09:29:14
【问题描述】:
我正在尝试通过以下方式在我的 Java 应用程序中使用 HyperSQL:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Main {
static Connection conn;
static Statement stat;
public static void main(String[] args) {
try {
Class.forName("org.hsqldb.jdbc.JDBCDriver" );
} catch (Exception ex) {
System.out.println("An error occurred while loading HSQLDB JDBC driver: " + ex.getMessage());
return;
}
try {
conn = DriverManager.getConnection(
"jdbc:hsqldb:file:helper_db;sql.syntax_mys=true");
stat = conn.createStatement();
stat.executeUpdate(
"CREATE TABLE IF NOT EXISTS some_table " +
"(" +
"foo TEXT PRIMARY KEY, " +
"bar TEXT" +
");"
);
stat.executeUpdate(
"INSERT INTO some_table VALUES" +
"('foo', 'bar') " +
"ON DUPLICATE KEY UPDATE some_table = VALUES" +
"('foo', 'bar');"
);
} catch (Exception ex) {
System.out.println("An error occurred: " + ex.getMessage());
return;
}
}
}
这段代码给了我以下输出:
An error occurred: unexpected token: ON
我做错了什么?如何解决这个问题?
【问题讨论】:
-
@a_horse_with_no_name 但我使用的是支持 ON DUPLICATE 的 MySQL 语法 (sql.syntax_mys=true)。或者它不是完全实现的 MySQL 语法?我需要使用什么?我只需要像 REPLACE INTO 那样做。
-
为什么你认为 HSQLDB 支持 MySQL 语法?它是不同的 DBMS,因此具有不同的语法( 记录在手册中)
-
@a_horse_with_no_name 我认为 sql.syntax_mys=true 做到了,不是吗?
-
您是否阅读了有关其作用的说明? hsqldb.org/doc/2.0/guide/management-chapt.html#N14C22
-
@a_horse_with_no_name 对不起,谢谢