Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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_Database - Fatal编程技术网

如何修复java数据库错误?

如何修复java数据库错误?,java,database,Java,Database,我已经把我的问题缩小到这些代码行,我知道这与语法有关。我得到的错误是:[Microsoft][ODBC Microsoft Access Driver]字段定义中的语法错误我从中得到错误的代码部分是: try { System.out.println("Creating StockTrades table..."); stmt.executeUpdate("CREATE TABLE StockTrades (userID TEXT(20) CON

我已经把我的问题缩小到这些代码行,我知道这与语法有关。我得到的错误是:[Microsoft][ODBC Microsoft Access Driver]字段定义中的语法错误我从中得到错误的代码部分是:

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());

        }

缺少逗号?

解决方案:为了避免人们阅读所有评论,通过将十进制字段类型切换为货币类型,解决了此问题。对于那些无法摆脱十进制类型的人来说,根本问题从未被发现或解决

如果我猜的话,我会说这句话:

symbol TEXT(8), CONSTRAINT FK2_StockTrades FOREIGN KEY
看起来文本(8)和约束之间有一个额外的逗号


编辑:就在另一张海报投票删除之前,我发布了这篇文章。在研究它之后,你可以用任何一种方法来做,有逗号也可以不用逗号。但是,您可以在连续行中同时使用这两种方法。也许这就是问题所在?

不,不是的,我已经检查过了。我当然希望是这样,这样做会更容易。不,也不是这样。这与后面的行有关,因为如果我排除除userID和symbol外键以外的所有内容,它就可以正常工作。语法的另一个问题似乎是另一个表没有命名为“Stocks”,或者该表没有名为“symbol”的列在该sql中,其他一切看起来都很好。引用的两个表都存在,并且都有请求的列,而且它们的拼写也都正确。所以这个问题让人困惑,这就是为什么我认为这个错误出现在这个表的其他列中。什么意思是在第二个约束中附加了单词FOREIGN KEY,而不是在第一个约束中?这是我看到的唯一其他差异。在那之后,就要一次抽出一列,然后再放下表。祝你好运!单词FOREIGN KEY表示括号中列的键的类型。只有当约束列和约束本身之间有逗号时,才需要代码的这一部分。
symbol TEXT(8), CONSTRAINT FK2_StockTrades FOREIGN KEY