如何将字符串值从 .csv 插入 SQLite 数据库? Qt C++

Posted

技术标签:

【中文标题】如何将字符串值从 .csv 插入 SQLite 数据库? Qt C++【英文标题】:How can I insert string value from .csv to SQLite database? Qt c++ 【发布时间】:2021-12-02 02:29:16 【问题描述】:

此代码可以成功地将 .csv 文件中的整数值插入 SQLite 数据库。但是,当值是字符串时。它不插入字符串值。请帮忙。

   QFile f(csvFile);
    if(f.open (QIODevice::ReadOnly))
        QSqlQuery que;
        QTextStream ts (&f);

        //Travel through the csv file "excel.csv"
        while(!ts.atEnd())
            QString req = "INSERT INTO main VALUES(";
            QStringList line = ts.readLine().split(',');
            for(int i=0; i<line .length ();++i)
                req.append(line.at(i));
                req.append(",");

            
            req.chop(1); // remove the trailing comma
            req.append(");"); // close the "VALUES([...]" with a ");"
            que.exec(req);
            qDebug()<<req;

            que.lastError();
        

qDebug()

"插入主值(1,2,3);" "插入主值(a,b,c);"

【问题讨论】:

"INSERT INTO main VALUES(a,b,c);" 需要引用文本。 为避免此类错误,最重要的是避免任何 SQL 注入风险,切勿使用变量值构建 SQL 语句,而是使用准备好的语句。我不知道 Qt 如何处理 SQLite 准备好的语句,但肯定有一种方法,可能比你的代码更简单。 【参考方案1】:

根据 Prapin 的回答,我决定写一个快速的方法。

这里是 QT SQL statement documentation 的链接。有多种查询数据库的方法。我个人是#2“命名绑定”而不是#3“位置绑定”的粉丝。这是因为程序员非常清楚正在访问哪些值。

【讨论】:

以上是关于如何将字符串值从 .csv 插入 SQLite 数据库? Qt C++的主要内容,如果未能解决你的问题,请参考以下文章

使用 c# 代码在更短的时间内将批量 CSV 数据插入 SQLite

如何使用参数化输入将 NULL 值从 nodeJS/javascript 插入 MySQL?

如何将字符串插入 sQlite.sdb (FireDac)?

如何将值从我的 Laravel 应用程序的 Sqlite 数据库传递到 .js 文件以允许 Paypal Checkout 按钮起作用?

如何将sqlite数据导入mysql?

如何在数字中插入小数