商贸城网站建设方案,专业做网站建设公,logo设计免费生成器在线,专业的昆明网站建设常用方法#xff1a; 1.使用sqlite3_get_table函数 2.获取sqlite创建表的sql语句字符串#xff0c;然后进行解析获取到相应的字段 3.采用配置文件的方式#xff0c;将所有字段名写入配置文件 方法1#xff1a;使用sqlite3_get_table函数 代码#xff1a; char *dbname “…常用方法 1.使用sqlite3_get_table函数 2.获取sqlite创建表的sql语句字符串然后进行解析获取到相应的字段 3.采用配置文件的方式将所有字段名写入配置文件 方法1使用sqlite3_get_table函数 代码 char *dbname “test.db”;
int rc sqlite3_open(dbname, db);
if (rc SQLITE_OK)
{char sql[256] “select * from Images” ;char** pResult;int nRow;int nCol;rc sqlite3_get_table(db, sql, pResult, nRow, nCol, NULL);if (rc SQLITE_OK){if (nRow 1){...}}sqlite3_free_table(pResult);
}
sqlite3_close(db); 分析 nRow返回的是查询到的记录的行数(不包括字段名那一行)nCol返回的记录的列数通过pResult可以访问所有返回的数据包括所有的字段名。如下图 nRow7,nCol6,则pResult[0-5]返回的为当前这张表的字段名每个字段名都是一个字符串数组。 该方法缺点如果当前表中不存在记录时将无法访问pResult[0 - nCol-1],这样就无法获取到表中字段。实际应用中经常需要在程序刚启动时就一次性先获取表中所有的字段名以便之后的插入删除更新等操作所以该方法实用性不强。 方法2获取sqlite创建表的sql语句字符串 过程分析sqlite3在创建一个数据库以及对应的表之后会自动生成一个table该table格式如下 其中字段sql为创建表的create语句通过sqlite3_get_table可以获取到指定表的create sql 语句然后解析字符串就可以得到指定表中所有字段名。 代码 //获取上图Figures表中create sql语句
string DB_GetFigureCreateSql()
{string res ;int rc sqlite3_open(dbname, db);if (rc SQLITE_OK){char *sql select sql from sqlite_master where tbl_name Figures and type table;char** pResult;int nRow;int nCol;rc sqlite3_get_table(db, sql, pResult, nRow, nCol, NULL);if (rc SQLITE_OK){if (nRow 1){res pResult[nCol];}}sqlite3_free_table(pResult);}sqlite3_close(db);return res;
}
//解析字符串函数
std::vectorstring split(string str, string separator)
{std::vectorstring result;int cutAt;while ((cutAt str.find_first_of(separator)) ! str.npos){if (cutAt 0){result.push_back(str.substr(0, cutAt));}str str.substr(cutAt 1);}if (str.length() 0){result.push_back(str);}return result;
}
//获取表中字段名
std::vectorstring DB_GetKeyFieldName(string res)
{std::vectorstring r split(res, ,);std::vectorstring keyField;for (int i 0; i r.size(); i){std::vectorstring tp split(r[i], \);if (tp.size() 2){keyField.push_back(tp[0]);}else if (tp.size() 3){keyField.push_back(tp[1]);}}return keyField;
} 使用方法 std::vectorstring FieldName DB_GetKeyFieldName(DB_GetFigureCreateSql()); 结果分析如果表中随时有可能添加新的字段添加字段的sql语句如下 ALTER TABLE x ADD COLUMN new_col 其中new_col为字段名双引号必须加上因为上面解析的过程以双引号“ \””为分隔字符。(注意sql语句中加双引号单引号或者不加引号都可以成功的向指定表中添加字段) 方法3采用配置文件的方式将所有字段名写入配置文件 对于某些具体复杂的应用场景可以采用配置文件的方式将所有字段名写入对应的配置文件中每次进入应用程序时读取配置文件即可。另外如果某些字段有指定中可选的值也可以将这些可选值也写入配置文件中。本人自己用的不规范的配置文件写法就不分享了近期好好研究配置文件的规范写法。 本人暂时只使用过以上三种方法如果有人任何错误请及时与我联系。如果有更好的方法还请留言分享谢谢转载于:https://www.cnblogs.com/battlescars/p/cpp_get_sqlite3_column_name.html