Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除整数变量不起作用的查询_Java_Sql - Fatal编程技术网

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+”)中吗