QT连接sqlserver数据库问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT连接sqlserver数据库问题相关的知识,希望对你有一定的参考价值。

QT连接上了sqlserver,启动程序后长时间没有动作时,数据库就会自动断开,有什么解决的方法吗?还有就是怎么判断数据库断开了?求大神解答

参考技术A 连接长时间不操作是可能会断开,检查数据库的配置连接时间,一般会有时间限制,建议你程序启动需要和数据库交互时,先判断数据库是否是连接状态,未连接时重新连接 参考技术B 连接超时,试试把时间延长一点 参考技术C 检查数据库追问

在QT程序里有没有判断的方法

qt连接数据库(sql server)

公司有一项业务,需要把上百条数据输入到数据库(公司使用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连接sqlserver数据库问题的主要内容,如果未能解决你的问题,请参考以下文章

qt调用sql server存储过程并获取output参数

如何在 QT[C++] 中从 linux 机器连接 SQL Server 2008 R2?

sqlserver连接数超过100无法连接

windows server 2003如何设置最大用户连接数

SQL Server 连接数的任何限制?

如何增加windows server 2003远程连接数?