我使用sqlite3,表有25个条目。我执行:
select * from mytable;
并使用sqlite3_step检索每一行,并获取列
sqlite3_column_int(stmt, 5);
我使用索引值作为硬编码整数。我面临的问题是,如果有的话 添加任何新表条目[即前缀],然后我也需要更改索引。
这不是问题,但它是一个可维护性问题。是否有任何最佳方法/模式可以实现不同的目标?好心劝告。
答案 0 :(得分:0)
啊......
这样的事情:
enum {
COLUMN_NAME,
COLUMN_AGE,
COLUMN_ID,
COLUMN_END
};
char *arr[COLUMN_END];
for (i=0; i<COLUMN_END; i++)
arr[i] = malloc(50);
strcpy (arr[COLUMN_NAME] = "name");
strcpy (arr[COLUMN_AGE] = "age");
准备SQL语句:
sqlite_mprintf (" insert into mytable ('%s', '%s' , '%s') values ('%s',%d,%d)", arr[COLUMN_NAME], arr[COLUMN_AGE], arr[COLUMN_ID], "whoami", 10, 2323)");
检索时:
sqlite3_stmt_text(stmt,COLUMN_NAME);
这还够吗?
答案 1 :(得分:0)
而不是select *
使用select col1, col2, col3...
这样,无论表格发生什么,结果列的顺序和位置都是相同的(只要所有这些列都存在......)