2013-06-18 3 views
1

Я не знаю, что я должен делать с исключением «не поддерживается PreparedStatment».Почему исключение sqlite возвращено?

мой код

connection = connectToDB(); 
     print("Connection Success"); 

     String sql = "Create Table test(id Integer primary key not null," + 
       "name Varchar(32)," + 
       "age Integer)"; 
     Statement statement = connection.createStatement(); 
     statement.execute(sql); 
     print("Created Table"); 

     sql = "Insert into test Values(1, 'Mr.Maeda', 23)"; 
     statement.execute(sql); 
     print("Inserted Data"); 

     ResultSet result; 
     sql = "select * from test"; 
     PreparedStatement preStatement = connection.prepareStatement("select * from test where age = ?"); 
     preStatement.setString(1, "23"); 
     result = preStatement.executeQuery(sql); 
     while(result.next()){ 
      print(result.getString(result.getRow()));    
     } 

и я использую затмение & Java.

+0

Где именно вы получаете исключение? – Thihara

ответ

0

Вы должны вызвать executeUpdate() вместо того, чтобы выполнить в то время как inseritng записи:

sql = "Insert into test Values(1, 'Mr.Maeda', 23)"; 
statement.executeUpdate(sql); 

вместо

sql = "Insert into test Values(1, 'Mr.Maeda', 23)"; 
statement.execute(sql); 

Разница между казнить и executeUpdate:

булево выполнить() Выполняет инструкцию SQL в этом PreparedStatement , который может быть любым выражением SQL.

executeUpdate() выполняет оператор SQL в этом объекте PreparedStatement, который должен быть Манипуляция язык данных SQL (DML) заявление, такие, как INSERT, UPDATE или DELETE; или SQL-оператор, который ничего не возвращает, например, оператор DDL.

Для получения более подробной информации читайте javadocs

+1

Я не думаю, что это решило бы проблему. Я считаю, что 'execute()' будет работать и для UPDATE. –

+0

Выполняет инструкцию SQL в этом объекте PreparedStatement **, который может быть любым выражением SQL. ** – NINCOMPOOP

1

Изменить

result = preStatement.executeQuery(sql); 

в

result = preStatement.executeQuery(); 

PreparedStatement.executeQuery() не принимает строку запроса в качестве аргумента, потому что он уже готов Это.

Смежные вопросы