我有一张表格,其名称用双引号转义("表")
它有一个也用双引号转义的列(" 03/06 / 17")
当我做表信息pragma
时table = "\"Table\"";
column = "\"03/06/17\"";
Cursor res = mDB.rawQuery("PRAGMA table_info("+table+")",null);
int value = res.getColumnIndex(column);
if(value == -1)
{
isExist = false;
}
总是返回-1。
但是当我执行普通查询时,我得到了列。
table = "\"Table\"";
column = "03/06/17";
Cursor cursor = mDB.query(table,null,
null,null,null,null,null);
int colIndex = 0;
int colCount = cursor.getColumnCount();
cursor.moveToFirst();
while(colCount-- != 0) {
if(column.equals(cursor.getColumnName(colIndex)))
return true;
colIndex++;
}
该列是使用
创建的 table = "\"Table\"";
column = "\"03/06/17\"";
final String DB_ADD_COLUMN_STATEMENT_TABLE_SHOP_NAME =
"ALTER TABLE "+ table + " ADD COLUMN "+ column + " FLOAT";
mDB.execSQL(DB_ADD_COLUMN_STATEMENT_TABLE_SHOP_NAME);
答案 0 :(得分:2)
您在table_info
PRAGMA返回的数据中没有指定列。游标中的每一行代表表中的一列,请查看示例数据,table_info
命令返回表create table one(id, field1, field2 text, field3 unique);
:
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 id 0 0
1 field1 0 0
2 field2 text 0 0
3 field3 0 0
因此,如果您要查找名称为03/06/17
的列的详细信息,则需要枚举游标并检查其name
值是否等于03/06/17