在QT中使用addDataBase添加一个数据库连接,其中第一个参数应该填入使用数据库驱动的类型,如QMYSQL、QSQLLITE、QSQLPSSQL等。
  1. QSqlDatabase QSqlDatabase::addDatabase(const QString & type, const QString & connectionName = QLatin1String( defaultConnection ))

第一个参数指定了应用程序使用哪一种数据库驱动访问数据库。

       Qt自己建立了不同数据库的驱动,这些驱动会调用相应DBMS的编程接口对数据库进行操作。下面给出QtSql模块定义的驱动类型,与对应的DBMS。
QDB2
IBM Db
QIBASE Borland InterBase
QMYSQL MYSQL
QOCI 甲骨文公司
QODBC ODBC(包括微软公司的Server服务器)
QPSQL PostgreSQL的7.3版以及更高版
QSQLITE QLite第三版
QSQLITE2 QLIte2第二版
QTDS sybase自适应服务器

由图可以看出其中只有QODBC比较特殊,QODBC驱动调用ODBC驱动接口,ODBC对数据库的操作不依赖任何的DBMS,不直接于DBMS打交道,它将所有的数据库操作交给对应DBMS驱动程序去完成。因此在使用QODBC时候有两种连接方式:
  • DNS字符串
  1. QString dsn = "DRIVER={SQL SERVER};SERVER=58.67.161.109;DATABASE=RDBS;UID=RDBS_USER;PWD=RDBS_USER_7010387;";
  2. //还要注意这里的用户名要有创建表的权限,不然创建下面的表student会不成功。
  3. db.setDatabaseName(dsn); //数据库名 db.setUserName("RDBS_USER");//登录名,我再dsn里设置UID和PWD后,就不需要设置了
  4. if(!db.open ())
  5. {
  6. QSqlError error = db.lastError();
  7.          return false;
  8. }

  • 手动设置ODBC数据源

控制面板->系统和安全->管理工具->数据源(ODBC)

代码:

QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");

db.setDatabaseName("testdsn");

db.setUserName("sa");

db.setPassword("scada");

三、下面是ODBC和OLEDB的连接字符串写法:

1、ODBC连接字符串

//适合数据库类型 连接方式

access

"Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"

dBase

"Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"

oracle

"Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"

MSSQL server

"Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"

MS text

"Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"

Visual Foxpro

"Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"

MySQL

"Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"

SQLite

"Driver={SQLite3 ODBC Driver};Database=D:\SQLite\*.db"

PostgreSQL

"Driver={PostgreSQL ANSI};server=127.0.0.1;uid=admin;pwd=pass;database=databaseName"

最新文章

  1. 为什么Pojo类没有注解也没有spring中配置<bean>也能够被加载到容器中。
  2. Codeforces 730I [费用流]
  3. vnc服务器配置实例
  4. ubuntu 安装 wkhtmltopdf 的方法
  5. cassandra中对节点失败与否的探测方法, the Phi accrual Failure Dector,附论文
  6. Android JNI框架图
  7. 【转】Fiddler 教程
  8. Eclipse配置默认的编码集为utf-8
  9. socklen_t在windows和linux平台下的头文件定义
  10. i386 和amd64 的意思
  11. UVa 11234 Expressions (二叉树重建&由叶往根的层次遍历)
  12. Meditation Guide
  13. Android定义自己的面板共享系统
  14. Vue.js用法详解(一)更新中~
  15. Java并发中的CopyOnWrite容器
  16. Python-图像处理库PIL图像变换transpose和transforms函数
  17. MongoDB系列----备份与导入导出
  18. jQuery之jQuery扩展和事件
  19. 数据库的一致性读,赃读,多线程与赃读,ACID,UNDO
  20. SPA中,Node路由优先级高于React路由

热门文章

  1. NX二次开发-UFUN打开信息窗口UF_UI_open_listing_window()
  2. IP总结
  3. 微信-小程序-开发文档-服务端-模板消息:templateMessage.getTemplateLibraryList
  4. (转)HashSet<T>类
  5. C不同变量类型存储大小引发的BUG
  6. web开发者性能优化工具(一)
  7. json-lib 的maven dependency 一直找不到jar 包
  8. 【洛谷】P1009阶乘之和
  9. 【转】详解tomcat的连接数与线程池
  10. Django ORM 之 单表、多表查询