QSqlDatabase数据库链接

数据库链接相关介绍:

  1. QSqlDatabase类的一个对象,代表一个数据库链接,这个链接与某个物理.db文件相连接。
  2. 一个.db文件可以与多个数据库链接相连,即能与多个QSqlDatabase类对象相连
  3. 连接.db文件和数据库链接的函数:setDatabaseName(tr("database.db"));
  4. 这里的参数 database.db 就是要连接的.db文件的路径,对,是路径+文件名。默认路径为当前路径,一般在build。。。debug或release文件夹中。
  5. 这个函数属于QSqlDatabase类
  6. 不同的链接用链接名称(connectionName)来区分,这个connectionName是创建数据库链接的函数的第二个参数。
  7. 创建数据库链接的函数:

base = QSqlDatabase::addDatabase("QSQLITE",tr("abc"));

base = QSqlDatabase::addDatabase("QSQLITE");

第一个函数中,我提供了参数:链接名称。

第二个函数中没有提供,因为它有默认值:"qt_sql_default_connection"

如果只有一个数据库链接,一般使用第二种,不指定链接名称。

  1. 要对数据库进行操作经常会用到QSqlQuery类,其对象定义有两种:(编号算法好烂,这里该是8)

QSqlQuery query(base);

QSqlQuery query;

如果只有一个数据库链接,则其对象构造函数不需要参数,这个query对象直接和默认数据库链接挂钩。

若是有多个链接,就要用第一种来指定要操作的数据库链接。

  • 错误信息1:

QSqlQuery::exec: database not open

明明调用open函数了,怎么会not open?原因如下:

base = QSqlDatabase::addDatabase("QSQLITE",tr("abc"));   //这里指定数据库链接名称为abc

而定义query对象时,QSqlQuery query(base);    //虽然已指定query操作的数据库链接

但还是出现以上错误,说明两个可能:

(1)base没有正确的调用open函数;

查询后发现open没有参数可指定,所以如果是这个原因,我没有解决办法。

(2)第一个链接直接使用默认链接,不能指定名称。

这是个强制的条件,之后又创建新的链接对象时,再指定名称,用来与默认名称相区分。

  • 错误信息2:

"append data failed:" "Driver not loaded Driver not loaded"

QSqlQuery::exec: database not open

这次在not open基础上,连驱动都出问题了,但不要被吓到。这只是代码中几个字符修改的后果。

这次的链接名称依然是abc。

(1)但query对象的定义变成了

QSqlQuery query;        //这里没有指定query要操作的数据库

(2)这里使用的base.lastError().text()函数,把base换成query就是具体的错误信息了。

以上QSqlQuery 对象出现的问题,也适用于QSqlQueryModel。

注意QSqlQueryModel的setQuery函数第二个参数

以上文字中从“错误信息1”开始,颜色就不正常了,“删除格式”、“字体颜色”设置也不好用,凑合看吧。

时间: 2024-10-19 04:51:29

QSqlDatabase数据库链接的相关文章

沫沫金【实践可用】--web工程ORM数据库链接(JDBC)链接集群库||普通库,两种标准

普通链接配置,应用到集群会启动失败,请修改 集群数据库链接 jdbc.url=jdbc:oracle:thin:@//127.0.0.1:1521/momojin 普通数据库链接 jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521/momojin 区别就在于:"//",如上所示 标红的地方.请务必清楚

Oracle 数据库链接

SQL> CREATE DATABASE LINK   mydblink 2    CONNECT TO   test   IDENTIFIED BY   test123 3    USING '(DESCRIPTION = 4      (ADDRESS_LIST = 5        (ADDRESS = (PROTOCOL = TCP)(HOST=192.168.1.210)(PORT = 1521))) 6        (CONNECT_DATA = (SERVICE_NAME = o

EntityFramework 多数据库链接,MySql,SqlServer,Oracel等

环境:EntityFramework5.0,MySql5.6,MSSQL2012 EF是强大的ORM工具,真正意义上的多数据库链接指的是不同类型的数据库,以及同种类型的数据库多个库,EF很好的支持这一点,下面简单演示下: 创建一个MVC4.0,Framework4.5的基本项目,然后重点是WebConfig配置: <?xml version="1.0" encoding="utf-8"?> <!-- For more information on

计算机改名导致数据库链接的诡异问题

前几天给开发部门部署测试数据库时,遇到一个很诡异的问题:创建一个链接服务器GEK-MIS01时,报错如下: 消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行 仍有对服务器 'GEK-MIS01' 的远程登录或链接登录. 脚本如下(略去登录名等关键信息):   因为当时是一批脚本执行而且仅有这个脚本出错,当我准备查检查出错原因的时候,又有更紧急的事情要处理,就耽搁了处理这个问题,开发那边在测试过程发现这个数据库链接有问题,邮件反馈给我,我检查时居然发现很多不可

EF之MSSQL分布式部署一:EFContext自定义数据库链接

不废话,上代码: 来源:http://bbs.csdn.net/topics/390823046 原文地址:EF之MSSQL分布式部署一:EFContext自定义数据库链接 /// <summary> /// 得到Entity的连接字符串 /// </summary> /// <param name="edmxFullName">Edmx的包括命名空间的全名称</param> /// <param name="server

java JDBC 数据库链接

1.准备环境搭建: myeclipse,sql2005,jdbc. 2.都下载完之后开始进行安装 ,前两个是属于数据库软件,正常安装即可(注意数据库登陆不要使用windows验证) <1> 将JDBC解压缩到任意位置,比如解压到C盘program files下面,并在安装目录里找到sqljdbc.jar文件,得到其路径开始配置环境变量 在环境变量classpath 后面追加 C:\Program Files\Microsoft SQL Server2005 JDBC Driver\sqljdb

创建公开数据库链接

CREATE PUBLIC DATABASE LINK "数据库链接别名" CONNECT TO "登陆用户" IDENTIFIED BY "登陆密码" USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = IP)(PORT = 1521)))(CONNECT_DATA =(SID = SID)))';

mybatis源码数据库链接配置

<?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE configuration             PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"            "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"><configurat

win 2008 64位IIS7出现数据库链接出错的解决办法

法一:开启父路径 在IIS7中ASP默认情况下,"父路径"是没有启用的,我们必须手动开启"父路径",选择"True",搞定"父路径"选项.具体操作如下图所示: 打开"Tnternet信息服务(IIS)管理器",左侧栏选择"Default Web Site",内容区域选择"ASP",如下图: 双击打开"ASP",在"行为"中,将&