Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Android 列类型整数的SQLite查询WHERE子句_Android_Sqlite - Fatal编程技术网

Android 列类型整数的SQLite查询WHERE子句

Android 列类型整数的SQLite查询WHERE子句,android,sqlite,Android,Sqlite,我有一个SQLite表,由2列类型组成VARCHAR和INTEGER。如果同一行中的INTEGER值等于0 我的代码示例: public static final String CreateDateTable = "create table " + DATE_TABLE + " (" + DATE + " VARCHAR(30) not null, " + INTEGER_COLUMN + " INTEGER DEFAULT 0)"; String[]

我有一个SQLite表,由2列类型组成
VARCHAR
INTEGER
。如果同一行中的
INTEGER
值等于
0

我的代码示例:

public static final String CreateDateTable = "create table " + DATE_TABLE
        + " (" + DATE + " VARCHAR(30) not null, " + INTEGER_COLUMN
        + " INTEGER DEFAULT 0)";

    String[] column = new String[] { DATE};
    String WHERE = "CAST("+INTEGER_COLUMN+" as VARCHAR) = ?";
    String[] WHEREARGS = new String[] { "0" };
    Cursor c;
    c = ourDatabase.query(DATE_TABLE, column, WHERE, WHEREARGS, null, null,
            null);

所有行都将返回,
WHERE
子句似乎没有任何效果。

您希望的输出值类型是什么?如果只是varchar列,那么

SELECT charCol
FROM table
WHERE table.intCol = 0;
你应该试试:

String[] column = { DATE };
String where = INTEGER_COLUMN + " = ?";
String[] whereArgs = { "0" };

Cursor c = ourDatabase.query(
    DATE_TABLE, column, where, whereArgs, null, null, null);
对VARCHAR的强制转换是多余的

但是,它确实不应该导致返回所有行。所以,我猜要么你插入值的方式有问题,要么你看结果的方式有问题

一个更完整的代码示例可能有助于找出哪一个

编辑:

我尝试了您发布的更新代码,包括表创建。它实际上并没有编译,但假设您的意思是
+“INTEGER DEFAULT 0,)”+“INTEGER DEFAULT 0,”;
,它可以工作,并且仍然只返回正确的行


同样,如果您希望我们能够找到问题,您可能应该发布用于插入值的代码、查询数据库的方式以及得到的确切结果。

解决方案是将整数列强制转换为
TEXT
, 以下代码返回了正确的结果


String WHERE=“CAST”(“+INTEGER\u COLUMN+”作为文本)=?”;

仅是varchar列我按照您的建议尝试了您的代码,它还返回整个列
c=ourDatabase.rawQuery(“从“+DATE\u TABLE+”中选择“+DATE\u TABLE+”+NUM\u SMOKES+”=?”,新字符串[]{“0”);
。如果有帮助的话,我已经用创建表格时使用的
字符串更新了我的问题。有什么建议吗?我希望得到的类型是INTEGERi。我将编辑代码以提供更完整的概述。在将问题作为原始代码发布之前,我已经尝试了上述代码,经过一些研究后,建议try
CAST
,但这也不起作用。虽然我确定表中的值,但很抱歉,我编辑了代码,使其与问题相关,并且在这样做时出现了错误。现在已修复。