前言

数据库这部分不是特别的了解,只懂些皮毛。所以这篇博客不是很专业,有很多我认为的,而未理论求证的观点。

说到连接数据库,我之前一直使用的是,数据库的驱动文件(sql drivers),觉得用什么数据库,要使用对应的数据库驱动,若Qt没自带,则需要自己编译。

然而上述属于连接数据库的方法其一,我现在知道了另一种连接数据库的方法:用数据源ODBC,因为Qt含有这个驱动,我们只需要配置数据源就可以连接到对应的数据库了。但是这种方法也有它的缺点:仅限于此机子,若另外的机子则需要重新配置,不像直接使用对应驱动的方式,可以打包好后,任何机子都适用。

理论

以下是来自百度百科的对ODBC数据源的理论介绍:

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一组数据的位置,可以使用 ODBC驱动程序访问该位置。

一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS(数据管理系统),不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

一个完整的ODBC由下列几个部件组成:

  1. 应用程序(Application)。

  2. ODBC管理器(Administrator)。该程序位于Windows控制面板(Control Panel)的管理工具内,其主要任务是管理安装的ODBC驱动程序和管理数据源。

  3. 驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。

  4. ODBC API。

  5. ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。

  6. 数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。

应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。

在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器与数据库交换信息。驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序

配置数据源

我是在win7 64位环境下,为配置oracle客户端配置数据源。具体操作如下:

安装oracle客户端,具体方法网上有^_^

创建监听文件:将路径 client\NetWork\Admin下的文件tnsnames.ora用记事本打开,与服务器创建连接,具体如下(注释位置需要更改的地方):

listenName = #监听名称(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.22)(PORT = 1521)) #IP及端口)(CONNECT_DATA =(SERVICE_NAME = orcl)#服务器名称))

配置数据源:打开控制面板-> 管理工具 -> 数据源(ODBC),就可以看到图1的界面,选择 系统DSN,点击添加 ,选择oracle 客户端的驱动,即oracle in OrclClientug_home,选择该驱动程序打开数据源配置,配置对应的信息,如图2(借别人的图).

图1

图2

注意:我的机子是win7 64位的,而为了能够使用PLSQL则下载使用的是32位的oracle,在这种情形下,直接按上述步骤打开数据源,是看不到oracle的驱动的,因为这个 数据源 是64位的,而我们用的是32位的,32位的打开方式是:手动打开 路径C:\Windows\SysWOW64下的odbcad32.exe,即可看到驱动。

代码

//以下信息要与自己的配置对应
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
db.setHostName(hostName);
db.setUserName(userName); //用户名
db.setPort(port);
db.setPassword(password);
db.setDatabaseName(databaseName);
bool isOpen=db.open();

结束语

就到这里吧,电脑没电了,啊哦

ODBC数据源的使用--Qt相关推荐

  1. QT连接SQLServer并添加ODBC数据源

    QT连接SQLServer并添加ODBC数据源 一.创建数据源 1.打开ODBC数据源 2.创建数据源 3.测试数据源 二.QT连接SQLServer 1.连接代码 2.测试成功样图 一.创建数据源 ...

  2. win8数据源设置mysql_Win8系统ODBC数据源有何重要功能?

    对计算机发展比较有研究的朋友一定会知道ODBC,它是一个比较古老的东西,发展到现在Win8系统上版本已经是3.8了.微软虽然没有对ODBC做很大的更新,但是正因为ODBC是一个比较成熟和古老的规范,因 ...

  3. Oracle连接odbc数据源

    Oracle连接odbc数据源 说明 oracle连接ODBC数据源有两种方式,hsodbc和dg4odbc,简单说dg4odbc是hsodbc的升级.两种连接方法大致一样,现将连接步骤说明如下: 检 ...

  4. 自己添加ODBC数据源的Access驱动

    一般情况下,在电脑的控制面板,ODBC数据源,里面添加ODBC数据源的时候,都有各种驱动,选择自己需要的即可: 但是有的电脑上可能没什么驱动:如下: 现在假设要添加Access的ODBC数据源,怎么办 ...

  5. 配置ODBC数据源——找不到SA账户的解决

    SQL Server的总结还没有做完,但剩下的我想慢慢来了.今天开始打算进行学生信息管理系统的实战.不知道就是想实战了,不动手学习不踏实.打开刚从师父那儿拿到的学生信息管理系统,有点庞大,此时我的胸腔 ...

  6. linux odbc 数据源测试,linux操作系统配置ODBC数据源

    1.安装ODBC数据包,可以通过手工编译的方式也可以通过rpm包的方式进行安装,本文选择rpm包的安装方式: [root@boserver odbc]# ls -l 总计 1656 -rw-r--r- ...

  7. .net odbc连接mysql数据库,下载安装MySQL数据库ODBC驱动和配置MySQL ODBC数据源

    1. 下载MySQL ODBC驱动: 打开的页面如下图所示,可根据实际使用情况选择下载相应的MSI安装程序,使用Visual C++ 6.0环境编程请下载32位MSI安装程序. 点击下载后出现如下页面 ...

  8. 符号未定义Java_Java ODBC数据源(未定义符号:SQLAllocEnv)

    我有以下Java代码.该代码的目的是建立与远程MySQL数据库ProductionDb(在我的/etc/odbc.ini文件中定义的数据源)的连接. import java.sql.*; import ...

  9. MFC自动注册ODBC数据源

    首先,在stdafx.h内添加如下头文件: #include <odbcinst.h> //ODBC数据库API头文件 #include <afxdb.h> //包含数据库头文 ...

最新文章

  1. avplayer VS2008编译
  2. [PR-3]ArUco EKF SLAM 扩展卡尔曼SLAM
  3. chrome浏览器不能录音:Uncaught TypeError: Cannot read property ‘getUserMedia‘ of undefined解决方法
  4. 13.  Roman to Integer
  5. 封装一个Array 数据 绑定 html select 方法
  6. 使用js实现换肤功能
  7. js整理 03-18
  8. Hbase RegionServer 宕机
  9. wordpress主题安装教程及错误处理
  10. 美图个性化推荐的实践与探索
  11. 在手机上抓包HTTP/HTTPS的请求
  12. (pythonQQ群管理)通过selenium 自动批量删除QQ群成员
  13. 导入项目报错:Unmapped Spring configuration files found
  14. FW:nbsp;司马相如琴挑文君真相:劫色劫…
  15. 分享:git push 时报错 Permission to username/My_python.git denied to deploy key 解决方法
  16. ERROR 1046 (3D000): No database selected
  17. swiper——AutoPlay
  18. 第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组解析
  19. 数据库系统-存储过程
  20. 20210323第一家量产国产化蓝牙AOA高精度定位基站生态合能培训会上海站现场直播下午内容视频录像回放-深圳核芯物联原厂工程师罗良技术分享

热门文章

  1. 函数fseek() 用法
  2. 【SICP练习】59 练习2.29
  3. 【LorMe云讲堂】程磊:微生物群落构建及其应用
  4. 西邮Linux兴趣小组2021纳新试题②
  5. miRNA靶基因软件预测分值如何看?
  6. 2021年 深圳高考 成绩查询,深圳高考成绩查询系统2021
  7. matlab碎纸拼接相似函数,碎纸片的拼接复原算法及MATLAB实现解析.doc
  8. html5标签知多少
  9. 主流开源OLAP对比分析
  10. 验证码识别软件的下载