2012-01-04 100 views
2

使用Derby作爲我的數據庫驅動程序和捆綁通過Java執行SQL查詢, 有,這是遇到一個錯誤,試圖執行這個查詢Java和數據庫查詢?

stmt.executeQuery("insert into " + "TEST " + "values (" + dataTimeRev + ", " 
            + dataType + "," + obj + ")"); 

這裏dataTimeRev,數據類型,且OBJ時與變數數據。

是指出錯誤是這樣

java.sql.SQLSyntaxErrorException: VALUES clause must contain at least one element. Empty elements are not allowed. 
+0

我們沒有看到錯誤:( – paulsm4 2012-01-04 04:51:38

+0

是不是因爲你沒有列出要插入值的列的名稱? '插入測試(colA,colB)值(1,2)' – dasblinkenlight 2012-01-04 04:53:06

+0

您的TEST是否只有三個字段?那些字符串?如果是這樣,它應該用單引號。 – kosa 2012-01-04 04:53:22

回答

4

如果列數據類型爲VARCHAR,你將不得不通過在qoutes值一樣'value'的,你應該做如下

String query = "insert into TEST values('"+dataTimeRev+"', '"+dataType+"','"+obj+"')"; 
stmt.executeQuery(query); 
0
  1. 驗證dataTimeRev,數據類型,且OBJ不爲空,而不是空白。
  2. 我不確定Derby是否遵循SQL語法。但是如果這些值的類型是varchar,那麼它應該用單引號(')括起來。例如:

stmt.executeQuery( 「插入到」 + 「TEST」 + 「的值('」 + dataTimeRev +「 ' ' 」 +的dataType +「',' 」+ OBJ +「 ')「);

0

試試這個:

stmt.executeQuery("insert into TEST values ('" + dataTimeRev + "', "'+ dataType + "',"' + obj + "')"); 
0

之一這個錯誤的原因是試圖插入一個不是字符串的類型(Date,Double,Integer等,被單引號包圍'' 例如我的表是dec LARED這樣的:

String createTableStatement = "CREATE TABLE PRODUCT"+ "(product_id INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)," + 
       "product_name CHAR(80), "+ 
       "price DOUBLE," + 
       "supplier CHAR(50))"; 

所以我在做:的

statement.executeUpdate("INSERT INTO PRODUCT (PRODUCT_NAME, PRICE, DATE_SUPPLIED, QUANTITY, SUPPLIER) VALUES " + 
     "('" + productName + "', " + "'" + price + "', " + "'" + supplier +"')"); 

代替:

statement.executeUpdate("INSERT INTO PRODUCT (PRODUCT_NAME, PRICE, DATE_SUPPLIED, QUANTITY, SUPPLIER) VALUES " + 
     "('" + productName + "', " + price + ", " + "'" + supplier +"')");