我正在使用 sqlite3,表有 25 个条目。我执行:
select * from mytable;
并使用 sqlite3_step 检索每一行,并获取列,
sqlite3_column_int(stmt, 5);
我将索引值用作硬编码整数。我面临的问题是,如果添加了任何新表条目 [即前缀],那么我还需要更改索引。
这不是问题,而是可维护性问题。是否有任何最佳方法/模式来实现不同的目标?好心劝告。
而不是select *
使用select col1, col2, col3...
这样,无论表发生什么,结果列的顺序和位置都是相同的(只要所有这些列都存在......)
啊...
像这样的东西:
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);
这足够了吗?