国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程

C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程

2022-03-09 14:37LyShark C/C++

Qt SQL模塊是Qt中用來(lái)操作數(shù)據(jù)庫(kù)的類,該類封裝了各種SQL數(shù)據(jù)庫(kù)接口,可以很方便的鏈接并使用。本文主要介紹了Qt數(shù)據(jù)庫(kù)QSql增刪改查組件的應(yīng)用教程,感興趣的同學(xué)可以學(xué)習(xí)一下

Qt SQL模塊是Qt中用來(lái)操作數(shù)據(jù)庫(kù)的類,該類封裝了各種SQL數(shù)據(jù)庫(kù)接口,可以很方便的鏈接并使用,數(shù)據(jù)的獲取也使用了典型的Model/View結(jié)構(gòu),通過(guò)MV結(jié)構(gòu)映射我們可以實(shí)現(xiàn)數(shù)據(jù)與通用組件的靈活綁定,一般SQL組件常用的操作,包括,讀取數(shù)據(jù),插入數(shù)據(jù),更新數(shù)據(jù),刪除數(shù)據(jù),這四個(gè)功能我將分別介紹它是如何使用的。

SQL模塊在使用時(shí)必須引入模塊,需要在pro文件內(nèi)增加QT += sql并在頭文件內(nèi)增加#include <QSqlDatabase>導(dǎo)入模塊才可以正常使用。

C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程

初始化數(shù)據(jù)庫(kù): 初始化調(diào)用QSqlDatabase::addDatabase指定數(shù)據(jù)庫(kù)類型,通過(guò)db.setDatabaseName()指定數(shù)據(jù)庫(kù)文件名.

#include &lt;QCoreApplication&gt;
#include &lt;QSqlDatabase&gt;
#include &lt;QSqlError&gt;
#include &lt;QSqlQuery&gt;
#include &lt;QSqlRecord&gt;
#include &lt;iostream&gt;
#include &lt;QStringList&gt;
#include &lt;QString&gt;
#include &lt;QVariant&gt;

// 初始化表結(jié)構(gòu)
// https://www.cnblogs.com/lyshark
bool InitSQL()
{
  // 指定數(shù)據(jù)庫(kù)驅(qū)動(dòng)類型
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("./lyshark.db");
   if (!db.open())
   {
          std::cout &lt;&lt; db.lastError().text().toStdString()&lt;&lt; std::endl;
          return false;
   }

  // 執(zhí)行SQL創(chuàng)建表
  db.exec("DROP TABLE LyShark");
  db.exec("CREATE TABLE LyShark ("
                  "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                  "name VARCHAR(40) NOT NULL, "
                  "age INTEGER NOT NULL)"
       );

  // 提交事務(wù)請(qǐng)求
  bool ref = db.commit();
  db.close();
  return ref;
}

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);

  bool ref = InitSQL();
  std::cout &lt;&lt; "init: " &lt;&lt; ref &lt;&lt; std::endl;

  return a.exec();

初始化表結(jié)構(gòu)如下:

C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程

逐條插入數(shù)據(jù):逐條插入記錄在Qt中可直接調(diào)用SQL模塊提供的db.exec()函數(shù),插入后最后需要調(diào)用db.commit()一次性提交事務(wù).

#include &lt;QCoreApplication&gt;
#include &lt;QSqlDatabase&gt;
#include &lt;QSqlError&gt;
#include &lt;QSqlQuery&gt;
#include &lt;QSqlRecord&gt;
#include &lt;iostream&gt;
#include &lt;QStringList&gt;
#include &lt;QString&gt;
#include &lt;QVariant&gt;

// 逐條插入數(shù)據(jù)
// https://www.cnblogs.com/lyshark
bool InsertSQL()
{
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("./lyshark.db");
   if (!db.open())
   {
          std::cout &lt;&lt; db.lastError().text().toStdString()&lt;&lt; std::endl;
          return false;
   }

   // 逐條插入數(shù)據(jù)
   db.exec("INSERT INTO LyShark(name,age) ""VALUES ('admin',23)");
   db.exec("INSERT INTO LyShark(name,age) ""VALUES ('zhangsan',25)");
   db.exec("INSERT INTO LyShark(name,age) ""VALUES ('lisi',34)");

   // 提交數(shù)據(jù)
   bool ref = db.commit();
   return ref;
}

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);

  bool ref = InsertSQL();
  std::cout &lt;&lt; "insert = &gt; " &lt;&lt; ref &lt;&lt; std::endl;

  return a.exec();
}

插入記錄如下:

C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程

多條記錄插入:一次性插入多條數(shù)據(jù)記錄,可調(diào)用query.prepare()綁定字段與SQL記錄,綁定后即可通過(guò)循環(huán)批量插入記錄.

#include &lt;QCoreApplication&gt;
#include &lt;QSqlDatabase&gt;
#include &lt;QSqlError&gt;
#include &lt;QSqlQuery&gt;
#include &lt;QSqlRecord&gt;
#include &lt;iostream&gt;
#include &lt;QStringList&gt;
#include &lt;QString&gt;
#include &lt;QVariant&gt;

// 批量插入數(shù)據(jù)
// https://www.cnblogs.com/lyshark
bool InsertMultipleSQL()
{
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("./lyshark.db");
  if (!db.open())
  {
         std::cout &lt;&lt; db.lastError().text().toStdString()&lt;&lt; std::endl;
         return false;
  }

  // 定義字符串鏈表
  QStringList user_name;
  QStringList user_age;

  // 批量插入數(shù)據(jù)到鏈表中
  user_name &lt;&lt; "www.lyshark.com" &lt;&lt; "https://www.cnblogs.com/lyshark" &lt;&lt; "lyshark";
  user_age &lt;&lt; "22" &lt;&lt; "33" &lt;&lt; "44";

  // 綁定數(shù)據(jù)記錄
  QSqlQuery query;
  query.prepare("INSERT INTO LyShark(name,age) ""VALUES (:name, :age)");

  // 判斷兩張表中字段數(shù)據(jù)量是否一致
  if(user_name.size() == user_age.size())
  {
      // 循環(huán)插入數(shù)據(jù)
      for(int x=0;x&lt; user_name.size(); x++)
      {
          query.bindValue(":name",user_name[x]);
          query.bindValue(":age",user_age[x]);
          query.exec();
      }
  }
  // 提交數(shù)據(jù)
  db.commit();
}

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);

  bool ref = InsertMultipleSQL();
  std::cout &lt;&lt; "insert = &gt; " &lt;&lt; ref &lt;&lt; std::endl;

  return a.exec();
}

批量插入數(shù)據(jù)如下:

C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程

查詢表中記錄: 查詢記錄可調(diào)用QSqlQuery query()得到記錄條數(shù),然后不斷循環(huán),每次循環(huán)調(diào)用一次query.next()獲取一條,直到循環(huán)結(jié)束.

#include &lt;QCoreApplication&gt;
#include &lt;QSqlDatabase&gt;
#include &lt;QSqlError&gt;
#include &lt;QSqlQuery&gt;
#include &lt;QSqlRecord&gt;
#include &lt;iostream&gt;
#include &lt;QStringList&gt;
#include &lt;QString&gt;
#include &lt;QVariant&gt;

// 查詢數(shù)據(jù)記錄
// https://www.cnblogs.com/lyshark
bool SelectSQL()
{
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("./lyshark.db");
   if (!db.open())
   {
          std::cout &lt;&lt; db.lastError().text().toStdString()&lt;&lt; std::endl;
          return false;
   }

   // 查詢數(shù)據(jù)
   QSqlQuery query("SELECT * FROM LyShark;",db);
   QSqlRecord rec = query.record();

   // 循環(huán)所有記錄
   while(query.next())
   {
       // 判斷當(dāng)前記錄是否有效
       if(query.isValid())
       {
           int id_ptr = rec.indexOf("id");
           int id_value = query.value(id_ptr).toInt();

           int name_ptr = rec.indexOf("name");
           QString name_value = query.value(name_ptr).toString();

           int age_ptr = rec.indexOf("age");
           int age_value = query.value(age_ptr).toInt();

           std::cout &lt;&lt; "ID: " &lt;&lt; id_value &lt;&lt; "Name: " &lt;&lt; name_value.toStdString() &lt;&lt; "Age: " &lt;&lt; age_value &lt;&lt; std::endl;
       }
   }
   return true;
}

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);

  bool ref = SelectSQL();
  std::cout &lt;&lt; "select = &gt; " &lt;&lt; ref &lt;&lt; std::endl;

  return a.exec();
}

循環(huán)輸出的數(shù)據(jù)如下:

C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程

更新表中記錄: 更新表中記錄直接調(diào)用update語(yǔ)句即可,在調(diào)用之前通過(guò)QString sql拼接待修改語(yǔ)句并提交db.commit()事務(wù)即可完成更新.

#include &lt;QCoreApplication&gt;
#include &lt;QSqlDatabase&gt;
#include &lt;QSqlError&gt;
#include &lt;QSqlQuery&gt;
#include &lt;QSqlRecord&gt;
#include &lt;iostream&gt;
#include &lt;QStringList&gt;
#include &lt;QString&gt;
#include &lt;QVariant&gt;

// 修改表中數(shù)據(jù)
// https://www.cnblogs.com/lyshark
bool UpdateSQL(QString uid, QString new_name)
{
  // 指定數(shù)據(jù)庫(kù)驅(qū)動(dòng)類型
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("./lyshark.db");
   if (!db.open())
   {
          std::cout &lt;&lt; db.lastError().text().toStdString()&lt;&lt; std::endl;
          return false;
   }

  // 執(zhí)行SQL更新記錄
  QString sql = QString("update LyShark set name='%1' where id=%2;").arg(new_name).arg(uid);
  db.exec(sql);
  std::cout &lt;&lt; "update =&gt; " &lt;&lt; sql.toStdString() &lt;&lt; std::endl;

  // 提交事務(wù)請(qǐng)求
  bool ref = db.commit();
  db.close();
  return true;
}

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);

  // 更新ID=6的記錄更新為 www.cnblogs.com/lyshark
  bool ref = UpdateSQL("6","www.cnblogs.com/lyshark");
  std::cout &lt;&lt; "update flag: " &lt;&lt; ref &lt;&lt; std::endl;

  return a.exec();
}

C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程

到此這篇關(guān)于C/C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程的文章就介紹到這了,更多相關(guān)C++ Qt 數(shù)據(jù)庫(kù)QSql增刪改查內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/LyShark/p/15649713.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 超碰中文字幕 | 五月激情综合网 | 狠狠操狠狠操 | 国产视频福利 | 精品无码久久久久久久动漫 | 四虎欧美 | 成人午夜 | 久久性网站 | 欧美精产国品一二三区 | 欧美做爰一区二区三区 | 男女视频网站 | 精品视频久久久久 | 国内自拍网站 | 成人激情在线观看 | 一区二区欧美在线 | 国产乱码精品一区二区三区av | 欧美性网| 7799精品视频天天看 | 日韩国产一区 | 久久久免费视频观看 | 欧美日韩国产三级 | 91久久国产综合久久91精品网站 | 欧美色综合天天久久综合精品 | 国产黄色小视频在线观看 | 黄色在线观看网站 | 韩国av一区二区 | 一级黄色大片在线观看 | 9色av| 久久久久久91 | 一区二区三区四区精品 | 国产精品一区二区三区免费 | 久草视频国产 | 国产成人综合一区 | 精品天堂| 在线观看成人 | 成人看片在线 | 欧洲成人午夜免费大片 | 成人影院www在线观看 | 国产天堂网 | 欧美日韩精品电影 | 国产一二三区在线观看 |