删除整数变量不起作用的查询

时间:2013-12-04 11:20:03

标签: java sql

我的数据库包含一列数据类型为Integer的列。我想使用该列值删除记录但我收到错误。

这是我的代码

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

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

我收到了以下错误:

  

标准表达式中的数据类型不匹配。

3 个答案:

答案 0 :(得分:0)

在查询中传递VARCHAR值:

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

只需删除'并再试一次。

我敢打赌,您ID的类型为NUMBER

此外,我建议您使用PreparedStatement添加Integer值:

delete from Table where ID=?

否则您可能会遇到一些安全问题。

答案 1 :(得分: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});

答案 2 :(得分:0)

所以你要插入整数而不是字符。因此你不需要插入值的单引号,即int值。它应该是

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

优良作法是在大写字母中包含主要关键词/子句。还有一个,总是尝试使用PreparedStatement而不是简单的语句。

修改 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();