1. 程式人生 > >qt連接數據庫(sql server)

qt連接數據庫(sql server)

提前 cal 處理 iou user 指向 ast 工作 表格

公司有一項業務,需要把上百條數據輸入到數據庫(公司使用sql server數據庫)中,數據來源是excel表格或者是微信公眾號的頁面,這個工作十分的無聊。我就想寫一個程序批量的寫入數據庫,節省人力物力。

我最擅長的語言是c++,所以決定使用c++來連接數據庫。如果只給我gcc或者g++肯定也是不行的,於是決定借助qt庫。

1.QT如何連接數據庫sql server?
數據庫服務器需要準備,需要檢查端口,查看權限是否打開。需要準備一個可以登陸的賬號和密碼。
QT安裝的那臺電腦需要設置數據源。在控制面板->管理工具->數據源中添加新的數據源,設置數據源的時候最好指定默認數據庫。
基礎的要求完成了,下面就可以使用代碼來連接數據庫了。
技術分享圖片

技術分享圖片

技術分享圖片


  QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); //設置數據庫驅動類型為SQL Server
  qDebug()<<"ODBC driver?"<<db.isValid(); //查看QT是否支持該類型的數據庫
  QString dsn = QString::fromLocal8Bit("QTODBC"); //數據源名稱
  db.setHostName("192.168.1.107"); //選擇本地主機,127.0.1.1
  db.setDatabaseName(dsn); //設置數據源名稱
  db.setUserName("qiny"); //登錄用戶
  db.setPassword("******"); //密碼
  if(!db.open()) //打開數據庫
  {
  qDebug()<<db.lastError().text(); //提示數據庫沒有連接的錯誤信息。
  //打開失敗
  }
  //到此處數據庫就連接完成了,是不是很簡單呢?


2.QT如何操作數據庫?
對數據庫的操作,不外乎增刪查改。
QT中提供了豐富的函數來處理數據庫的操作
1.QsqlQuery類;
QSqlQuery query; //定義一個對象
query.exec("select * from News"); //執行一段程序

//也可以不提前給出數據,使用占位符
query.prepare("INSERT INTO T_USER (name, age) VALUES (:name, :age)"); //準備執行SQL查詢
query.bindValue(":name", "justin"); //在這定占位符上確定綁定的值
query.bindValue(":age", 33);
query.exec();

如果是增刪改,並沒有多少返回。但是如果查詢有很多返回值,那麽就需要讀取
query.next(),指向下一條數據
query.seek(int n) :query指向結果集的第n條記錄。指定當前的位置
query.first() :query指向結果集的第一條記錄。
query.last() :query指向結果集的最後一條記錄。
previous() :query指向上一條記錄,每執行一次該函數,便指向相鄰的上一條記錄。
record() :獲得現在指向的記錄。
value(int n) :獲得屬性的值。其中n表示你查詢的第n個屬性,比方上面我們使用“select * from student”就相當於“select id, name from student”,那麽value(0)返回id屬性的值,value(1)返回name屬性的值。該函數返回QVariant類型的數據,關於該類型與其他類型的對應關系,可以在幫助中查看QVariant。
at()//返回當前查詢的位置

3.如何顯示數據?

可以使用一些model的類,例如QModelIndex,QSqlQueryModel,QSqlTableModel等

具體的例子參考博客https://blog.csdn.net/qq_36038987/article/details/80795626

qt連接數據庫(sql server)