2011-02-22 77 views
0

我已將範圍縮小到這些代碼行,並且我知道它與語法有關。我得到的錯誤是:[微軟] [ODBC Microsoft Access驅動程序]語法中的字段定義部分代碼錯誤,我得到的錯誤從爲:我該如何解決我的java數據庫錯誤?

try { 

      System.out.println("Creating StockTrades table..."); 
      stmt.executeUpdate("CREATE TABLE StockTrades (userID TEXT(20) CONSTRAINT FK1_StockTrades REFERENCES " 
           + "Users (userID), symbol TEXT(8), CONSTRAINT FK2_StockTrades FOREIGN KEY (symbol) " 
           + "REFERENCES Stocks (symbol), numStocks INT, pricePerStock DECIMAL(5, 2), " 
           + "stocksPurchased INT, stocksSold INT, totalCashPaid DECIMAL(9, 2), " 
           + "totalCashReceived DECIMAL(9, 2))"); 

     } catch(Exception ex) { 

      System.out.println("Exception creating StockTrades table: " + ex.getMessage()); 

     } 

     try { 

      System.out.println("Creating StockTrades table primary key index..."); 
      stmt.executeUpdate("CREATE UNIQUE INDEX PK_StockTrades ON StockTrades (userID, symbol) " 
           + "WITH PRIMARY DISALLOW NULL"); 

     } catch(Exception ex) { 

      System.out.println("Exception creating StockTrades index: " + ex.getMessage()); 

     } 

回答

0

解決方案:爲了避免人們閱讀所有評論,通過從Decimal字段類型切換到Currency類型解決了此問題。對於那些不能從小數類型轉換的人來說,根本問題從未被識別或解決。

如果我猜,我會說這是這一行:

symbol TEXT(8), CONSTRAINT FK2_StockTrades FOREIGN KEY 

看來你有文字(8)和約束之間的多餘的逗號。

編輯:我已經發布了這個之前,其他海報然後投票刪除。經過研究,你可以採用任何方式,無論是否使用逗號。但是,你可以用連續的兩行來完成它。也許這是問題?

+0

不,不是。這與之後的行有關係,因爲如果我排除除userID和符號外鍵以外的所有內容,它就可以正常工作。 – Joshua 2011-02-22 19:48:12

0
CREATE TABLE StockTrades (userID TEXT(20) CONSTRAINT FK1_ 
             ^--- 

缺少逗號?

+0

沒關係,不是我已經檢查過了。我當然希望它是這樣,它會讓這樣做更容易。 – Joshua 2011-02-22 19:30:28