青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

zhonghua

C++博客 首頁 新隨筆 聯系 聚合 管理
  72 Posts :: 1 Stories :: 4 Comments :: 0 Trackbacks

 #include <QtSql>
QT += sql
QSqlDatabase類實現了數據庫連接的操作
QSqlQuery類執行SQL語句
QSqlRecord類封裝數據庫所有記錄

QSqlDatabase類

  1. QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");  
  2. db.setHostName("localhost");    //數據庫主機名   
  3. db.setDatabaseName("scott");    //數據庫名   
  4. db.setUserName("stott");        //數據庫用戶名   
  5. db.setPassword("tiger");        //數據庫密碼   
  6. db.open();          //打開數據庫連接  
  7. db.close();         //釋放數據庫連接  

建立數據庫文件

  1. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  
  2. db.setDatabaseName("database.db");  
  3. if (!db.open())   
  4. {  
  5.     qDebug("數據庫不能打開");  
  6. }  
  7. return false;  
  1. 建立數據庫文件后創建表并插入兩條數據  
  1. QSqlQuery query;  
  2. query.exec("create table student(id INTEGER PRIMARY KEY autoincrement,  
  3.             name nvarchar(20), age int)"); //id自動增加  
  4. query.exec("insert into student values(1,'小明', 14)");  
  5. query.exec("insert into student values(2,'小王',15)");  


QSqlQuery類

插入值到數據庫操作

一、直接用SQL語句插入(參照上面)

二、利用預處理方式插入(ORACLE語法和ODBC語法)

適合插入多條記錄,或者避免將值轉換成字符串(即正確地轉義),調用prepare()函數指定一個包含占位符的query,然后綁定要插入的值

ORACLE語法

  1. QSqlQuery query;   
  2. query.prepare("INSERT INTO T_STUDENT (name, age) VALUES (:name, :age)"); //準備執行SQL查詢  
  3. query.bindValue(":name", "小王");   //在綁定要插入的值  
  4. query.bindValue(":age", 11);   
  5. query.exec();  


ODBC語法

  1. QSqlQuery query;  
  2. query.prepare("INSERT INTO T_STUDENT (name,age) VALUES (?,?)"); //準備執行SQL查詢  
  3. query.addBindValue("小王");   //在綁定要插入的值  
  4. query.bindValue(11);  
  5. query.exec();  

三、批量插入到數據庫中

  1. QSqlQuery query;  
  2. query.prepare(“insert into student values (?, ?)”);  
  3. QVariantList names;  
  4. names << "小王" << "小明" << "小張" << "小新"; // 如果要提交空串,用QVariant(QVariant::String)代替名字  
  5. query.addBindValue(names);  
  6. QVariantList ages;  
  7. ages << 11 << 13 << 12 << 11;  
  8. query.addBindValue(ages);  
  9. if (!q.execBatch()) //進行批處理,如果出錯就輸出錯誤  
  10.     qDebug() << q.lastError();  


查詢數據庫操作

  1. QSqlQuery query;  
  2. query.exec("SELECT * FROM t_STUDENT"); // 查詢的結果可能不止一條記錄,所以我們稱之為結果集  
  3. while (query.next())  
  4. {  
  5.     QString name = query.value(0).toString(); //取第i條記錄第1個字段(從0開始計數)的結果  
  6.     int age = query.value(0).toInt(); //取第i條記錄第2個字段的結果  
  7.     // ... 處理name,age變量數據   
  8. }  


seek(int n) :query指向結果集的第n條記錄。指定當前的位置

first() :query指向結果集的第一條記錄。

last() :query指向結果集的最后一條記錄。

next() :query指向下一條記錄,每執行一次該函數,便指向相鄰的下一條記錄。

previous() :query指向上一條記錄,每執行一次該函數,便指向相鄰的上一條記錄。

record() :獲得現在指向的記錄。

value(int n) :獲得屬性的值。其中n表示你查詢的第n個屬性

int rowNum = query.at(); //獲取query所指向的記錄在結果集中的編號

int fieldNo = query.record().indexOf(“name”); //返回"name"的列號

int columnNum = query.record().count(); //獲取每條記錄中屬性(即列)的個數

 

事務操作

操作函數:transaction(),commit()提交,rollback()回滾
操作事務前,先判斷該數據庫是否支持事務操作。hasFeature是QSQLDriver類函數

  1. if (QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions)){ ... } //   

 插入一條記錄,然后提交事務

  1. QSqlDatabase::database().transaction();  
  2. QSqlQuery query;  
  3. query.exec("SELECT id FROM T_STUDENT WHERE class=1");  
  4. if (query.next())  
  5. {  
  6.     query.exec("INSERT INTO T_STUDENT (id,name,age) VALUES (3,'小李',13)");  
  7. }  
  8. QSqlDatabase::database().commit();  
posted on 2012-04-23 11:16 米米 閱讀(629) 評論(0)  編輯 收藏 引用 所屬分類: qt
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产亚洲精品久久久8v| 亚洲国产精品v| 亚洲精品女人| 香蕉免费一区二区三区在线观看| 一本色道久久综合亚洲精品小说 | 欧美综合国产精品久久丁香| 亚洲欧美日本视频在线观看| 欧美尤物巨大精品爽| 久久精品在这里| 免费成人你懂的| 亚洲电影在线| 亚洲免费成人| 小处雏高清一区二区三区| 久久久精品日韩欧美| 欧美国产成人在线| 国产精品videossex久久发布| 国产精品美女久久久久av超清| 国产亚洲福利一区| 亚洲精品在线电影| 久久大香伊蕉在人线观看热2| 老妇喷水一区二区三区| 亚洲成人自拍视频| 中国日韩欧美久久久久久久久| 久久99伊人| 欧美涩涩网站| 亚洲高清不卡一区| 午夜精品亚洲一区二区三区嫩草| 狼人天天伊人久久| 在线亚洲成人| 麻豆91精品91久久久的内涵| 欧美亚男人的天堂| 亚洲国产美女久久久久| 午夜精品免费视频| 亚洲第一级黄色片| 久久精品国产69国产精品亚洲| 欧美日韩免费高清| 欧美日韩日日夜夜| 亚洲激情网址| 久久亚洲捆绑美女| 亚洲女女女同性video| 老司机免费视频一区二区三区| 欧美网站在线| 日韩系列欧美系列| 鲁大师成人一区二区三区| 亚洲一区二区免费视频| 欧美激情偷拍| 91久久久久久久久| 美女国产一区| 久久久av水蜜桃| 国产日韩三区| 午夜视频久久久久久| 99精品热视频只有精品10| 欧美a级片网| 亚洲欧洲日本专区| 亚洲第一视频网站| 久久手机精品视频| 午夜综合激情| 欧美午夜精品理论片a级大开眼界| 亚洲精品人人| 亚洲激情自拍| 免费成人高清| 亚洲国产美女精品久久久久∴| 久久成人精品无人区| 99爱精品视频| 欧美日韩综合在线| 亚洲午夜精品久久| 亚洲国产日韩在线| 欧美大片国产精品| 亚洲欧洲久久| 亚洲国产视频a| 欧美日韩高清一区| 一区二区三区高清| 亚洲视频 欧洲视频| 国产精品美女久久久久av超清 | 亚洲人成高清| 亚洲大胆在线| 欧美日韩一区不卡| 欧美亚洲在线观看| 欧美有码视频| 亚洲第一级黄色片| 亚洲精品永久免费精品| 国产精品www| 欧美在线观看视频一区二区| 欧美亚洲日本网站| 一区国产精品| 亚洲精品在线免费观看视频| 国产精品久久久久久久久免费桃花 | 蜜桃av一区| 欧美大色视频| 亚洲永久免费av| 午夜激情一区| 91久久在线播放| 一区二区三区欧美亚洲| 国产亚洲成精品久久| 欧美大片一区二区| 国产精品高清网站| 裸体素人女欧美日韩| 欧美日韩免费一区| 久久久久久久97| 欧美日韩1区2区| 久久国产一区二区三区| 猫咪成人在线观看| 午夜综合激情| 欧美激情麻豆| 久久精品99无色码中文字幕| 欧美福利视频在线| 久久久久久九九九九| 欧美日韩一区综合| 欧美成人一区二区三区在线观看 | 亚洲国产精品成人久久综合一区| 日韩一区二区电影网| 精品999在线播放| 久久字幕精品一区| 欧美成人dvd在线视频| 亚洲人永久免费| 日韩午夜精品| 老司机午夜精品视频在线观看| 亚洲高清自拍| 欧美一区二区高清在线观看| 日韩亚洲欧美成人| 欧美日韩国产限制| 亚洲女爱视频在线| 欧美激情综合亚洲一二区| 毛片av中文字幕一区二区| 国产精品裸体一区二区三区| 欧美本精品男人aⅴ天堂| 99在线精品视频| 亚洲午夜性刺激影院| 欧美在线看片a免费观看| 亚洲欧洲在线一区| 亚洲视频高清| 亚洲国产成人在线| 国产精品99久久久久久有的能看 | 日韩一区二区精品| 狠狠色丁香婷婷综合影院| 亚洲少妇自拍| 中文一区字幕| 欧美日韩亚洲成人| 91久久精品一区| 亚洲精一区二区三区| 鲁大师影院一区二区三区| 噜噜爱69成人精品| 黄色成人在线观看| 久久国产欧美| 久久久久国产一区二区三区四区 | 91久久久亚洲精品| 鲁大师影院一区二区三区| 免费中文字幕日韩欧美| 黄色成人av在线| 麻豆国产精品777777在线| 免费观看一区| 亚洲毛片av在线| 欧美人成网站| 亚洲午夜伦理| 久久av红桃一区二区小说| 国产亚洲午夜| 美女日韩欧美| 99精品久久| 久久精品中文| 亚洲人成在线观看网站高清| 欧美激情一二区| 99精品欧美一区二区三区综合在线 | 另类激情亚洲| 亚洲茄子视频| 一级日韩一区在线观看| 国产精品电影在线观看| 午夜精品久久久久99热蜜桃导演| 久久久噜久噜久久综合| 伊人久久av导航| 欧美人交a欧美精品| 亚洲视频在线播放| 久久精品国内一区二区三区| 亚洲高清视频一区| 欧美香蕉大胸在线视频观看| 性刺激综合网| 亚洲高清自拍| 久久久xxx| 在线亚洲一区二区| 一区精品在线| 国产精品日日做人人爱| 老司机精品导航| 亚洲午夜视频在线| 欧美成人精品一区| 欧美在线观看网址综合| 亚洲精品国产精品乱码不99按摩| 国产精品久久久久久影视| 美女尤物久久精品| 亚洲图片自拍偷拍| 亚洲国产精品一区二区尤物区| 久久不见久久见免费视频1| 日韩视频一区二区三区| 一区二区三区在线视频观看| 国产精品久久久久久久午夜| 欧美成人午夜激情| 久久gogo国模啪啪人体图| 亚洲少妇自拍| 中文在线一区| 日韩网站在线观看| 欧美国产日本| 美国十次成人|