Qt连接Sql Server

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

1.先搞数据源,(至于为什么,因为网上这么说)

先在开始搜索“ODBC”,找到ODBC数据源,然后点进去

34c53fb1f1c68fa82ebd6c79c979f5e2b2d.jpg

然后点添加,找到Sql Server,点完成

e5b9d5f30eb5595c8b8aad3cb3df19da64e.jpg

输入以下内容:服务器我的是本机,然后下一步

27f103e68431591ed15dfc72f18beb7136b.jpg

因为我没有设置Sql Server验证方式直接使用Windows验证,然后下一步

8c7bae3d6b2a608802b1d5a21f85d82ea9d.jpg

这里有个更改数据库,改成自己想用的就行了。然后点完成就行了,(在这里改默认数据库)

3217636bb6fbda8bc6873ecf1ff244a1098.jpg

之后有个测试,只要是填对了应该没问题

2.找到Sql Server 配置管理器找到网络配置,然后点开那个什么协议,找到右边的tcpip,然后启动它

右键属性设置tcp端口为1433,只要动态端口我也没管它,后来自动变成37178了(至于这一步有没有必要我不知道,因为这个步骤是在前面做的,如果要验证其必要性可以先不设置,你看看能不能成功,如果能成功说明没有必要设置这一步)

002df6ddacc428ee8f726ff6cec99100844.jpg

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;
}

转载于:https://my.oschina.net/u/3782432/blog/1861357

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值