Java 删除整数变量不起作用的查询
我的数据库包含一列,数据类型为Java 删除整数变量不起作用的查询,java,sql,Java,Sql,我的数据库包含一列,数据类型为Integer。我想使用该列值删除记录,但出现错误 这是我的密码 int id=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter ID to serach")); //....code st.executeUpdate("delete from Table where ID='"+id+"'"); 我发现以下错误: 条件表达式中的数据类型不匹配 在查询中传递VARCHAR值: delete from
Integer
。我想使用该列值删除记录,但出现错误
这是我的密码
int id=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter ID to serach"));
//....code
st.executeUpdate("delete from Table where ID='"+id+"'");
我发现以下错误:
条件表达式中的数据类型不匹配
在查询中传递VARCHAR值:
delete from Table where ID='"+id+"'"
只需删除”
,然后重试
我打赌你的ID
类型是NUMBER
此外,我建议您使用PreparedStatement添加整数值:
delete from Table where ID=?
否则,您可能会遇到一些安全问题。简单更改为:
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});
因此,您插入的是整数而不是字符。因此,在插入ie int value时,不需要在值周围加单引号。它应该是
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();
条件不匹配意味着无法接受您试图放入数据库的数据,因为数据库需要不同类型的数据。您可以在此处添加表DDL吗。您是否使用MS access作为数据库?我建议您不要使用java构造SQL—这是一种糟糕的做法,在某些情况下可能会导致SQL注入。请改用参数化SQL语句。您能告诉我如何编写插入查询以插入numberplz告诉我插入查询以插入numberinsert到您的表(ID)值(?)或插入到您的表(ID)值(“+ID+”)中吗