0

我正在使用 sqlite3,表有 25 个条目。我执行:

select * from mytable;

并使用 sqlite3_step 检索每一行,并获取列,

sqlite3_column_int(stmt, 5);  

我将索引值用作硬编码整数。我面临的问题是,如果添加了任何新表条目 [即前缀],那么我还需要更改索引。

这不是问题,而是可维护性问题。是否有任何最佳方法/模式来实现不同的目标?好心劝告。

4

2 回答 2

0

而不是select *使用select col1, col2, col3...

这样,无论表发生什么,结果列的顺序和位置都是相同的(只要所有这些列都存在......)

于 2012-11-16T11:52:14.393 回答
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);

这足够了吗?

于 2012-11-16T11:05:54.313 回答