我在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或类似的东西打开数据库的情况。
答案 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