上文介绍在linux下可以通过QODBC来访问SqlServer,我们可以发现QODBC插件内部也是调用 libsybdb.so (sybase客户端访问库,可通过安装sybase得到. freetds是TDS的开源实现库,编译后会在lib目录产生该库),只是将TDS协议用ODBC接口方式再封装了一次而已. 既然内部也是使用的TDS协议,我们为什么要舍近求远用QODBC插件来访问呢? 我们可以直接通过QTDS插件来访问SqlServer,这样效率更高.
一. 编译TDS插件
指定freetds头文件和库路径,通过Freetds来编译TDS插件
cd $QTDIR/src/plugins/sqldrivers/tds qmake "INCLUDEPATH=/usr/local/freetds/include" "LIBS=-L/usr/local/freetds/lib -lsybdb" make
二. 配置sqlserver数据源
Freetds会从按以下顺序搜索freetds.conf配置文件:
1. $(FREETDSCONF) ,搜索系统FREETDSCONF环境变量是否配置
2. ~/.freetds.conf, 如果1没找到,freetds会从用户目录下搜索 .freetds.conf文件
3. $prefix/etc/feetds.conf,如2没找到,则搜索系统prefix环境变量
我们选择方案1,将配置文件放于指定目录下,然后在程序中设置该环境变量即可,这样便于程序部署.
三. 测试运行
// 在程序中设置FREETDSCONF环境变量 QString conf=QString("%1/etc/freetds.conf").arg(getenv("SCADA_ROOT")); char szBuff[256]; strcpy(szBuff,qPrintable(conf)); // 此处调用setenv才行,putenv不通过 setenv("FREETDSCONF",szBuff,1); // 注意:此处 databaseName 和 hostName参数与windows上编码有一定的差异, 否则无法连接数据库 QSqlDatabase db=QSqlDatabase::addDatabase("QTDS"); db.setDatabaseName("sqlscada"); db.setHostName("DataSource1"); // freetds中配置的数据源名称 db.setPort(3304); db.setUserName("sa"); db.setPassword("scada"); if(!db.open()) { qDebug("=== %s",qPrintable(db.lastError().text())); }else { qDebug("==== ok"); }
运行截图:
相关推荐
标题中的“Windows QTDS连接MSSQL”指的是在Windows操作系统环境下,使用QTDS(Quartz Transaction Data Services)作为中间件来连接Microsoft SQL Server的过程。QTDS是Qt框架的一部分,允许Qt应用程序与SQL数据库...
通过`QQmlContext`,我们可以将C++的对象暴露给QML,使得QML可以直接调用C++的函数和访问其属性。此外,还可以使用`QQmlComponent`动态创建QML对象,这在构建动态UI时非常有用。 QtDS是Qt的可视化设计工具,它允许...
3. **队列元素(QTDs和QHs)**:QTDs(Queue Transfer Descriptors)描述了USB事务的具体细节,而QHs则管理QTDs并指明了传输的方向和类型。 4. **中断机制**:EHCI支持中断和轮询模式,开发者需要理解如何设置中断...
EHCI驱动程序负责维护这些结构体的实例,并将它们映射到硬件寄存器,这样硬件就可以访问和使用这些结构体中的数据。 在Linux系统中,EHCI驱动通常位于drivers/usb/host目录下,例如ehci-hcd.c文件中实现了EHCI主机...
- **EHCI数据结构分类**: EHCI规范中的数据结构主要包括周期表(调度)、异步表(调度)、队列首部(QHs)和队列元素传输描述符(qTDs)。 - **调度表**: 周期表(调度)负责处理中断和同步传输;异步表(调度)则...
这样做是为了让电脑从路由器自动获取网络参数,以便能够访问配置界面。 接下来是进入路由器的配置界面。打开浏览器,这里我们以IE为例,但其他如Chrome、Firefox等现代浏览器也适用。在地址栏输入192.168.1.254并按...
文档详细阐述了EHCI数据结构,包括队列头部(QH)和队列元素传输描述符(qTDs),以及如何使用这些数据结构实现USB主机功能。QH负责定义传输使用的USB地址和端点号,包含指向当前qTD的指针、qTD覆盖区域...
标题中的“多普达D600活力版SPL修复软件”指的是针对多普达D600手机的一个特别版本的系统程序加载器(System Program Loader,简称SPL)的修复工具。SPL是手机固件中的一部分,它在设备启动时运行,负责加载操作系统...