2011-02-22 2 views
0

J'ai limité mon problème à ces lignes de code et je sais que cela a quelque chose à voir avec la syntaxe. L'erreur que je reçois est: [Microsoft] [Pilote ODBC Microsoft Access] Erreur de syntaxe dans la définition du champ la section de code je reçois l'erreur de est:Comment réparer mon erreur de base de données 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()); 

     } 

Répondre

0

Solution: Pour éviter aux utilisateurs de lire tous les commentaires, ce problème a été résolu en passant d'un type de champ Décimal au type monétaire. Le problème sous-jacent n'a jamais été identifié ou résolu pour ceux qui ne peuvent pas changer de type décimal.

Si je devais deviner, je dirais que c'est cette ligne:

symbol TEXT(8), CONSTRAINT FK2_StockTrades FOREIGN KEY 

Il semble que vous avez une virgule supplémentaire entre le texte (8) et la contrainte.

Modifier: J'avais posté ceci juste avant que l'autre affiche puis ai voté pour supprimer. Après la recherche, vous pouvez le faire de toute façon, avec ou sans la virgule. Cependant, vous l'avez fait dans les deux sens dans les lignes consécutives. Peut-être que c'est le problème?

+0

Non ce n'est pas ça non plus. Cela a quelque chose à voir avec les lignes après cela, parce que si j'exclus tout sauf la clé étrangère userID et le symbole cela fonctionne très bien. – Joshua

+0

La seule autre chose avec votre syntaxe semble être si l'autre table n'est pas nommée "Stocks" ou si cette table n'a pas de colonne nommée "symbole". Tout le reste semble bien dans ce sql. – Riggy

+0

Les deux tables référencées existent et ont les colonnes demandées, elles sont également épelées correctement. Donc, c'est déconcertant d'avoir ce problème, c'est pourquoi je pense que l'erreur est dans les autres colonnes de cette table. – Joshua

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

virgule manquante?

+0

Non ce n'est pas ça J'ai déjà vérifié pour ça. J'aurais bien aimé que ce soit le cas, cela rendrait cela plus facile. – Joshua

Questions connexes