2016-06-03 3 views
1

Я пытаюсь создать SQLite для своей игры и работать нормально, пока не попытаюсь поместить некоторые переменные в таблицу HighScores. Если я пытаюсь поместить переменную, она работает, только если я удалю «NOT NULL».Как передать переменные в SQLite в java

public void SQLite(){ 
    Connection c = null; 
    Statement stmt = null; 
    try { 
     Class.forName("org.sqlite.JDBC"); 
     c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

     stmt = c.createStatement(); 
     String sql = "CREATE TABLE HighScores " + 
       "(ID INT PRIMARY KEY  NOT NULL," + 
       " POINTS   INT  NOT NULL, " + 
       " NAME   CHAR(50) NOT NULL, " + 
       " TIME   INT  NOT NULL, " + 
       " LEVEL   INT  NOT NULL)"; 
     stmt.executeUpdate(sql); 


     c.setAutoCommit(false); 
     System.out.println("Opened database successfully"); 

     stmt = c.createStatement(); 
     String sql2 = "INSERT INTO HIGHSCORES (ID,POINTS,NAME,TIME,LEVEL) " + 
       "VALUES (1, ?, 'rodrigo', 99, 1);"; 
     PreparedStatement ps = c.prepareStatement(sql2); 
     ps.setInt(1, 5); 

     stmt.executeUpdate(sql2); 

     stmt.close(); 
     c.commit(); 
     c.close(); 

    } catch (Exception e) { 
     System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
     System.exit(0); 
    } 
} 

Успешно открыта база данных. java.sql.SQLException: NOT NULL ограничение не удалось: HighScores.POINTS

ответ

2

Вы звоните executeUpdate на stmt вместо подготовленного заявления. Так как sql2 не имеет значения для POINTS, он пытается вставить исключение и исключение.

Изменение:

stmt.executeUpdate(sql2); 

в

ps.executeUpdate(); 
Смежные вопросы