sqlite3,通过索引检索行元素的最佳方法?

时间:2012-11-16 10:53:16

标签: sql c sqlite

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

select * from mytable;

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

sqlite3_column_int(stmt, 5);  

我使用索引值作为硬编码整数。我面临的问题是,如果有的话 添加任何新表条目[即前缀],然后我也需要更改索引。

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

2 个答案:

答案 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...

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