我的数据库包含一列数据类型为Integer
的列。我想使用该列值删除记录但我收到错误。
这是我的代码
int id=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter ID to serach"));
//....code
st.executeUpdate("delete from Table where ID='"+id+"'");
我收到了以下错误:
标准表达式中的数据类型不匹配。
答案 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();