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;
}
相关文章
相关标签/搜索