【发布时间】:2011-11-03 19:59:54
【问题描述】:
对 sqlite(和 sql)相当陌生。我有几个表需要用几个列名生成,这些表可以随着我的编码而改变(在 c++ 中)。我该如何管理它们?我做对了吗?肯定有更好的实用程序代码。
编辑:具体来说,我想通过在编译时抽象表和字段名称来避免运行时错误(例如,使用#defines,但也许其他更好)。
例如我目前正在考虑创建一个 TableHandler 类,它将:
sqlite *db;
....
TableHandler tb("TableName");
tb.addField("FirstName", "TEXT");
tb.addField("Id", "INTEGER");
tb.createTable(db); //calls sqlite3_exec("create table TableName(FirstName TEXT, Id INTEGER)");
tb.setEntry("FirstName", "bob");
tb.addEntry(); //calls sqlite3_exec("insert ...");
tb.createCode(stdout);
//this will generate
/*
#define kTableName "TableName"
#define kFirstName "FirstName"
#define kId "Id"
...anything else useful?
*/
【问题讨论】:
-
分享码是什么意思?你没有写
CREATE TABLE声明有什么原因吗? -
我想要一份摘要,以便我可以根据需要轻松调整表格(甚至重命名表格或字段)。例如。 tb.setEntry("FirstOppsName", "bob"); //字段不存在。如何在编译时防止此类问题? tb.setEntry(kFirstName, "bob"); //这是一种解决方案。