创建表如果不存在Java SQL语法错误
似乎我无法找出第二个语句(stmt)的错误。第一个(pst)成功执行。第二个命令抛出一条消息,说“语法错误…在'78'附近(这是我在每个jTextField中发送的文本值)(第1行的ID INTEGER NOT NULL主键AUTO_INCREMENT,IDClean INTEGER NOT_NULL FORE”) ΗΜΡΜΝΑ、Ε∑ΕΔΑ是希腊语单词创建表如果不存在Java SQL语法错误,java,sql,create-table,Java,Sql,Create Table,似乎我无法找出第二个语句(stmt)的错误。第一个(pst)成功执行。第二个命令抛出一条消息,说“语法错误…在'78'附近(这是我在每个jTextField中发送的文本值)(第1行的ID INTEGER NOT NULL主键AUTO_INCREMENT,IDClean INTEGER NOT_NULL FORE”) ΗΜΡΜΝΑ、Ε∑ΕΔΑ是希腊语单词 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Connection conn = dbConnector2();
String sql = "insert into cleaning (ADDRESS, DIMOS, TK, ONOMA, PHONENUM) VALUES (?,?,?,?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, jTextField1.getText());
pst.setString(2, jTextField2.getText());
pst.setString(3, jTextField3.getText());
pst.setString(4, jTextField4.getText());
pst.setString(5,jTextField5.getText());
pst.execute();
JOptionPane.showMessageDialog(null, "Επιτυχής Αποθήκευση");
String sqlCreate = "CREATE TABLE IF NOT EXISTS " + jTextField1.getText()
+ "(ID INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,"
+ " IDClean INTEGER NOT NULL FOREIGN KEY(IDClean) REFERENCE
cleaning(IDClean),"
+ " ΗΜΕΡΟΜΗΝΙΑ DATE,"
+ " ΕΣΟΔΑ DOUBLE)";
Statement stmt = conn.createStatement();
stmt.execute(sqlCreate);
dispose();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
请参考您正在使用的DBMS。它可能有助于验证供应商特定的语法。我相信它是
mysql
。不幸的是,我无法为您提供帮助。但是,您可以尝试sql命令是否有效。例如如果不存在创建表tmp\U表(ID INTEGER NOT NULL主键自动递增,IDClean INTEGER NOT NULL外键(IDClean)引用清理(IDClean),日期,∑Δ双精度)
。然后您可以尝试在后台线程中运行,否则GUI将无响应。我正在MySql Workbench上使用InnoDB引擎您是否尝试过只运行create table
语句的一部分?我建议您这样做以清除任何错误行引用。另外,由于您使用的是MySql Workbench,您可以尝试直接在那里运行create table
的硬编码变体。尝试运行此查询,看看是否有效:create table if NOT EXISTS tmp_table(ID INTEGER NOT NULL主键自动递增,IDClean INTEGER NOT NULL,ΗΜΡΝΑDATE,∑∑∑△双外键(IDClean)引用清理(IDClean));
我刚刚通过终端在mysql中针对表清理(IDclean INTEGER主键)运行了这个
,它工作得很好。请参考您正在使用的DBMS。它可能有助于验证供应商特定的语法。我相信它是mysql
。不幸的是,我无法为您提供帮助。但是,如果sql命令起作用,您可以尝试。例如如果不存在,请创建表tmp\U表(ID INTEGER NOT NULL主键自动递增,IDClean INTEGER NOT NULL外键(IDClean)引用清理(IDClean),日期,∑Δ双精度)
。然后您可以尝试在后台线程中运行,否则GUI将无响应。我正在MySql Workbench上使用InnoDB引擎您是否尝试过只运行create table
语句的一部分?我建议您这样做以清除任何错误行引用。另外,由于您使用的是MySql Workbench,您可以尝试直接在那里运行create table
的硬编码变体。尝试运行此查询,看看是否有效:create table if NOT EXISTS tmp_table(ID INTEGER NOT NULL主键自动递增,IDClean INTEGER NOT NULL,ΗΜΡΝΑDATE,∑∑∑△双外键(IDClean)引用清理(IDClean));
我刚刚通过终端在mysql中针对表清理(IDclean INTEGER主键)
运行了它,它运行得很好。