class DbCommand
{
friend class DbQuery;
public:
template<typename ...Args>
DbCommand(const QString& prepare_sql, Args... args) {
//qDebug() << prepare_sql;
SetPrepareSql(prepare_sql);
parse(args...);
}
DbCommand() = default;
DbCommand(const DbCommand&) = default;
QString ToString();
private:
void SetPrepareSql(const QString& sql);
void AddBindValue(const QVariant& var);
//递归终止函数
void parse(){}
//展开函数
template <typename T, typename ...Args>
void parse(T head, Args... rest)
{
AddBindValue(head);
//qDebug() << head;
parse(rest...);
}
private:
QString prepare_sql_;
QVariantList variant_list_;
};
以下是示例
DbCommand clear_table("delete from T_TEST");
auto clear_sqlquery = DbHandler().Connection("test_connection").GetQuery();
clear_sqlquery.SetCommand(clear_table);
clear_sqlquery.Exec();
DbCommand command("select id, value from T_TEST where id = ?", 123);
auto query = DbHandler().Connection("test_connection").GetQuery();
query.SetCommand(command);
if(!query.Exec())
{
qDebug().noquote() << command.ToString();
qDebug() << query.ErrorString(); //ERROR REPORT
}
auto result = query.Result();
while(result.Next())
{
qDebug() << "id\t" << "value" ;
qDebug() << result.Value("id").toInt() << "\t" << result.Value("value").toInt();
原文链接: https://www.cnblogs.com/xdblog/p/15784644.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/390278
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!