SQLite“没有这样的表”

时间:2012-10-25 23:30:33

标签: android eclipse sqlite

我在Eclipse中创建了一个Adnroid程序,它读取csv文件并将信息输入到SQLite数据库中,然后使用

dbCursor = database.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_ITEMTYPE, KEY_QUANTITY},  null, null, null, null, null);  

    int iRow = dbCursor.getColumnIndex(KEY_ROWID);
    int iType = dbCursor.getColumnIndex(KEY_ITEMTYPE);
    int iQuantity = dbCursor.getColumnIndex(KEY_QUANTITY);

        for(dbCursor.moveToFirst(); !dbCursor.isAfterLast(); dbCursor.moveToNext()){
            allData = allData + " " + dbCursor.getString(iRow) + "\t " + dbCursor.getString(iType) + "\t\t\t " + dbCursor.getString(iQuantity) + "\n";      
        }

然后在textview框中打印出allData就可以了。

然后我想用

dbCursor = database.rawQuery("SELECT KEY_ROWID , SUM(KEY_ITEMTYPE) FROM DATABASE_TABLE GROUP BY KEY_ROWID", null);          
for(dbCursor.moveToFirst(); !dbCursor.isAfterLast(); dbCursor.moveToNext()){

    allDataSum = allDataSum + " " + dbCursor.getString(0);
} //I know this will probably not print what I want correctly but that's a problem for another day

当我尝试打印时,我收到错误“10-25 22:06:35.016:I / Database(1911):sqlite返回:错误代码= 1,msg =没有这样的表:DATABASE_TABLE”。

然后我打开DDMS文件资源管理器并将数据库复制到我的桌面上,然后尝试使用命令工具查看数据库,但又一次出现错误,“SQL错误:没有这样的表:库存”。

当显然数据库中没有表格时,模拟器如何向我展示我想要从.query()(但不是来自.rawQuery)看到的内容?关于我使用查询和rawQuery的所有内容都是相同的,所以不是没有为rawQuery或类似的东西打开数据库的情况。

2 个答案:

答案 0 :(得分:1)

您似乎正在使用名为DATABASE_TABLE,KEY_ROWID和KEY_ITEMTYPE的静态变量,其中包含您的实际名称。当你在rawQuery中使用它时,你将不得不这样做

dbCursor = database.rawQuery("SELECT " + KEY_ROWID + ", SUM(" + KEY_ITEMTYPE + ") FROM " + DATABASE_TABLE + " GROUP BY " + KEY_ROWID, null);

请注意,当您使用database.query进行查询时,您没有引号中的这些变量,这就是它的工作原理。

答案 1 :(得分:0)

不确定SUM()聚合是否会导致您遇到麻烦,但您可以使用sqlite命令行和“.tables”命令仔细检查表的存在:

sqlite3 DATABASE
SQLite version 3.7.8 2011-09-19 14:49:19
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sql>.tables