2013-12-04 2 views
0

Моя база данных содержит один столбец, имеющий тип данных как Integer. Я хочу удалить запись с использованием значения этого столбца, но я получаю сообщение об ошибке.Удалить запрос с целочисленной переменной, не работающей

Вот мой код

int id=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter ID to serach")); 
//....code 

st.executeUpdate("delete from Table where ID='"+id+"'"); 

Я получаю следующее сообщение об ошибке:

Data type mismatch in criteria expression.

+0

Критерии несовпадение означает, что данные, которые вы пытаетесь ввести в базу данных не может быть принята, поскольку база данных ожидает другой тип данных –

+0

Вы можете добавить таблицу DDL здесь. Вы используете MS-доступ в качестве базы данных? –

+0

Я советую вам не строить SQL с java - это плохая практика и может привести к инъекциям SQL в некоторых ситуациях. Вместо этого используйте параметризованные операторы SQL. – Nailgun

ответ

0

передать значение VARCHAR в запросе:

delete from Table where ID='"+id+"'" 

просто удалить ' и Попробуйте снова.

Держу пари, что ваш ID имеет тип NUMBER.

Кроме того, я предлагаю вам использовать PreparedStatement, чтобы добавить значение Integer:

delete from Table where ID=? 

В противном случае вы могли бы иметь некоторые проблемы безопасности.

+0

plz сказать мне вставить запрос для вставки номера – Aarav

+0

вставить в значения таблицы ("+ id +", ....); Это нормально – Aarav

+0

вставлять в значения вашей таблицы (ID) (?) Или вставлять в значения вашей таблицы (ID) («+ id +») –

0

Простое изменение:

st.executeUpdate("delete from Table where ID = "+id); 

        OR 




SQLiteDatabase _db = null; 
DataBaseHelper _dbHelper = new DataBaseHelper(_context, name, null, 1); 


_db = _dbHelper.getWritableDatabase(); 
_db.delete(TABLE, _ID + "=?", new String[]{id}); 
0

Так вы вставляете целое число, а не character.Thus нет необходимости одинарной кавычки вокруг значения вы вставляете т.е. INT value.It должен быть

st.executeUpdate("DELETE FROM Table WHERE ID="+id); 

It хорошая практика иметь основные ключевые слова/предложения в Uppercase. И еще один, всегда старайтесь использовать PreparedStatement довольно простое заявление.

EDIT PreparedStatement Пример для вставки в базу данных

String insertTableSQL = "INSERT INTO DBUSER" 
    + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES" 
    + "(?,?,?,?)"; 
PreparedStatement preparedStatement = dbConnection.prepareStatement(insertTableSQL); 
preparedStatement.setInt(1, 11); 
preparedStatement.setString(2, "mkyong"); 
preparedStatement.setString(3, "system"); 
preparedStatement.setTimestamp(4, getCurrentTimeStamp()); 
// execute insert SQL stetement 
preparedStatement .executeUpdate(); 
+0

Не могли бы вы рассказать мне, как писать запрос на вставку для вставки номера – Aarav

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