8
votes

Insertion de données dans une table de base de données H2

Je suis un débutant dans SQL. J'essaie de m'apprendre à travailler avec H2. J'ai réussi à créer une table, mais lorsque j'essaie d'insérer des données à l'aide d'une autre classe, les données ne sont pas insérées.

Voici mon code: P>

La classe qui crée les "mylovelystudents" Tableau: p> xxx pré>

la classe qui insère dans la table "mylovelystudents": p> xxx pré>

Le message d'erreur: p >

run:
Connecting to a selected database...
Connected database successfully...
Inserting records into the table...
org.h2.jdbc.JdbcSQLException: Column "DATABASE" not found; SQL statement:
INSERT INTO MYLOVELYSTUDENTS VALUES (123456789, 'Zara', 'Ali', 18, database) [42122-173]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:331)
    at org.h2.message.DbException.get(DbException.java:171)
    at org.h2.message.DbException.get(DbException.java:148)
    at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:144)
    at org.h2.command.dml.Insert.prepare(Insert.java:238)
    at org.h2.command.Parser.prepareCommand(Parser.java:219)
    at org.h2.engine.Session.prepareLocal(Session.java:428)
    at org.h2.engine.Session.prepareCommand(Session.java:377)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1138)
    at org.h2.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:124)
    at org.h2.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:113)
    at Database.H2Samples.JDBCExampleInsertRecordsExample.main(JDBCExampleInsertRecordsExample.java:34)
Goodbye!
BUILD SUCCESSFUL (total time: 4 seconds)


0 commentaires

5 Réponses :


9
votes

Vous avez oublié de citation "Database":

String sql = "INSERT INTO MYLOVELYSTUDENTS " 
             + "VALUES (123456789, 'Zara', 'Ali', 18, 'database')";
                                quotes needed here ---^--------^


0 commentaires

3
votes

La dernière colonne est une colonne varchar , mais vous semblez transmettre une valeur non coturée à l'instruction insérer

au lieu de ... xxx

essayez d'utiliser xxx


0 commentaires

2
votes

Le problème est dans cette ligne car l'erreur indique: xxx

peut-être que vous vouliez dire "base de données" au lieu de la base de données ? < / p>


0 commentaires

13
votes

La dernière colonne du cours contient le type de données VARCHAR2, vous devez donc conserver les valeurs dans les guillemets simples ('')

       String sql = "INSERT INTO MYLOVELYSTUDENTS " 
         + "VALUES (123456789, 'Zara', 'Ali', 18, 'database')";
                            quotes needed here ---^--------^


0 commentaires

7
votes

Un bon moyen de déboguer les requêtes est de les tester manuellement. H2 a une console H2 ( http: // localhost: 8082 , par défaut). Là, vous pouvez entrer des requêtes et obtenir des commentaires sur les erreurs.

J'ai vu un seul: je pense que vous avez besoin de citations autour du mot "Base de données".


1 commentaires

J'utilise H2 depuis des années, mais je n'ai jamais connu de sa console Web. Merci d'avoir mentionné cela.