Qt鏈接Sql Server

前提條件:Qt Creater5.4.1 、SQLServer2005 express 、 win7 32位sql

1.先搞數據源,(至於爲何,由於網上這麼說)數據庫

先在開始搜索「ODBC」,找到ODBC數據源,而後點進去express

而後點添加,找到Sql Server,點完成服務器

輸入如下內容:服務器個人是本機,而後下一步網絡

由於我沒有設置Sql Server驗證方式直接使用Windows驗證,而後下一步tcp

這裏有個更改數據庫,改爲本身想用的就好了。而後點完成就好了,(在這裏改默認數據庫)測試

以後有個測試,只要是填對了應該沒問題spa

2.找到Sql Server 配置管理器找到網絡配置,而後點開那個什麼協議,找到右邊的tcpip,而後啓動它3d

右鍵屬性設置tcp端口爲1433,只要動態端口我也沒管它,後來自動變成37178了(至於這一步有沒有必要我不知道,由於這個步驟是在前面作的,若是要驗證其必要性能夠先不設置,你看看能不能成功,若是能成功說明沒有必要設置這一步)code

3.qt代碼:建立Qt empty qmake project項目,而後添加main.cpp文件,pro文件中添加 QT += sql  

還有一事要將就是前面數據源默認數據庫我改了,你本身新建一個測試數據庫,而後在ODBC數據源配置中改成新建的數據庫就好了

#include <QSql>
#include <QDebug>
#include <QSqlError>
#include <QSqlDatabase>
#include <QSqlQuery>

bool OpenDatabase()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");   //數據庫驅動類型爲SQL Server
    qDebug()<<"ODBC driver?"<<db.isValid();
    QString dsn = QString::fromLocal8Bit("testdsn");      //數據源名稱
    db.setHostName("localhost");                        //選擇本地主機,127.0.1.1
    db.setDatabaseName(dsn);                            //設置數據源名稱
    //一開始我屏蔽了下邊兩行
    db.setUserName("sa");                               //登陸用戶
    db.setPassword("root");                              //密碼
    if(!db.open())                                      //打開數據庫

    {
        qDebug()<<db.lastError().text();
        qDebug()<<"i am";
        return false;                                   //打開失敗
    }
    else
    {
        qDebug()<<"database open success!";
        QSqlQuery query(db); //查詢Card表並輸出,測試可否正常操做數據庫
        query.exec("CREATE TABLE Persons(Id_P int,LastName varchar(255),dd int)");
        query.exec("insert into Persons values(1,'heh',2)");
        //query.exec("Create database data0723");
        query.exec("delete from Persons where dd=2");
        query.exec("select *from Persons");
        while(query.next())
        {
            qDebug()<<query.value(0).toInt() <<query.value(1).toString()<<query.value(2).toInt();
        }

    }return true;
}

int main(int argc, char *argv[])
{
    if(!OpenDatabase())
        return 1;
}
相關文章
相關標籤/搜索