Qt5连接SQL server2008

安装环境

安装Qt,我安装的是Qt5.2.1(下载链接:http://qtmirror.ics.com/pub/qtproject/archive/qt/5.2/5.2.1/qt-opensource-windows-x86-mingw48_opengl-5.2.1.exe),这个版本的Qt默认支持如下的数据库Available drivers: (“QSQLITE”, “QMYSQL”, “QMYSQL3”, “QODBC”, “QODBC3”, “QPSQL”, “QPSQL7”) 。

安装SQL server2008(官网下载链接:https://download.microsoft.com/download/E/C/1/EC1EA99F-8738-442E-842B-0B483CE62C77/SQLServer2008R2-KB4057113-x64.exe,安装步骤详细参考:https://zhuanlan.zhihu.com/p/65630194?from=singlemessage)。

配置Sql数据源

1、 打开系统的ODBC数据源(如果没有自行百度安装),如下图所示:
在这里插入图片描述
2、 点击右边的添加之后,再点SQL server,第一个名称这个很重要连接数据库的时候要使用要英文,第二个描述可以随便写就是对这个数据源的一个描述而已,第三个选择local就可以,如下图所示设置。接着下一步。
在这里插入图片描述
3、 sql配置用户登录方式,如下图所示默认就可以了
在这里插入图片描述
4、 选择你要连接的数据库如下所示:在这里插入图片描述
5、 如下图所示默认再点击完成即可
在这里插入图片描述
6、 点击完成之火之后如下所示,至此数据源的配置结束,在这里插入图片描述

Qt连接SQL server2008

1、 直创建工程,这样的东西就不再过多的敖述。

2、 直接在widget.cpp的文件里面编写代码,首先包含头文件如下:

#include <QSqlDatabase>	//连接数据库
#include <QSqlError>	//数据库连接错误是使用到
#include <QSqlQuery>	//数据库操作 
#include <QMessageBox>	//警告窗口的头文件,不适用警告窗口就不要添加了

3、 在构造函数里面添加图下代码:

	qDebug() << "Available drivers:" << QSqlDatabase::drivers();//输出当前环境支持的数据库,如有不支持的自行解决
    //添加数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");//QODBC指要连接的是SQL server数据库
    //连接
    db.setHostName("DESKTOP-27SFC8I");          //填写主机名(我的电脑是DESKTOP-27SFC8I)或填写ip地址也可以,在SQLServerManager10.msc里面查看不知道主机名的看下面的图片
    db.setDatabaseName(QString::fromLocal8Bit("new"));//这个是在系统的ODBC数据源里面设置的数据源
    db.setPort(1433);                           //端口(我这里是1433,也是SQL server默认的端口),这个也在SQLServerManager10.msc里面查看
    db.setUserName("DESKTOP-27SFC8I\nhjclxc");  //数据库用户名(我这里的是DESKTOP-27SFC8I\nhjclxc),在打开SQL Server Management Studio的时候的那个就是。
    db.setPassword("你的电脑密码");               //数据库密码,一般就是你电脑的密码,
    db.setDatabaseName("dbtask");               //要使用的数据库名,就是在前面配置Sql数据源时选择的那个数据库

    //判断数据库是否连接成功
    if(true == db.open()){
        qDebug() << "数据库打开成功" <<endl;
        QMessageBox::warning(this,"数据库打开成功","数据库打开成功");

        //操作数据库,定义操作句柄
        QSqlQuery query;

        //创建表的同时,进入操作
        if (query.exec("CREATE TABLE student( id INT , name CHAR(10), phone INT);") ){
            qDebug() << "创建表操作成功!!!" << endl;
            QMessageBox::warning(this,"数据表创建成功","数据表创建成功");

            //当行插入数据
            query.exec("insert into student(id, name, phone) values(1000, '哈哈哈',151615616);");
            query.exec("insert into student(id, name, phone) values(1320, '哈哈哈',151615616);");
            query.exec("insert into student(id, name, phone) values(1032, '哈哈哈',151615616);");
            query.exec("delete from student where id = 1032;");

            //批量插入,还有其他方法也可以,这里就不在演示了
            for(int i = 0; i < 10; i++){
                qDebug() << QString::number(1000+i, 10);
                qDebug() << "insert into student(id, name, phone) values(" + QString::number(1000+i,10) + ", '哈哈哈',151615616);" ;
                query.exec(QString("insert into student(id, name, phone) values(" + QString::number(1000+i,10) + ", '哈哈哈',151615616);"));
            }

            //查询
            query.exec("select * from student;");
            //query.exec("select * from student where id = 1032;");//条件查询
            
            //判断下这个数据表是否有数据,有就继续输出
            while (query.next()) {
                            //query.value(0)表示取第0列的值,在将其转化为对应的类型,创建表的时候是什么类型就转换为什么类型,使用数据表的字段名也可以输出,如"name"、"phone"
                qDebug() << "id: " << query.value(0).toInt()
                            << ", name: "<<query.value("name").toString()
                               << ", phone: " << query.value("phone").toInt();
            }

            //如果数据库存在就删除
            //if (query.exec("drop table student;"))
            //  QMessageBox::warning(this,"数据表删除成功","数据表删除成功");
        }
        else
            qDebug() << "语法有误,操作失败!!!" << endl;

        //可以打开的话必须关闭
        db.close();
    }else{
        QMessageBox::warning(this,"数据库打开失败!!!",db.lastError().text());
        qDebug() << "数据库打开失败!!!"<< db.lastError().text() <<endl;
    }

主机名

服务器名称

4、 操作后输出如下:
运行后输出

这也是我的一次学习过程,就在这里记录一下,如果有错误的地方,还请个位大佬帮忙指出, 附上我这次的Qt过程文件(链接:链接:https://pan.xunlei.com/s/VMOMBztZQgwjJJq1vaNJOePcA1
提取码:v7xp),最后这个数据库操作过程我是跟着黑马程序员做的(具体链接:https://www.bilibili.com/video/BV1XW411x7NU?p=85) 如有侵权我将删除,感谢各位看到这里,感谢支持。

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值