• 7015阅读
  • 5回复

请教关于Windows下使用odbc连接 ms sql时使用字符串连接的问题 [复制链接]

上一主题 下一主题
离线rcyboom
 

只看楼主 倒序阅读 楼主  发表于: 2009-11-13
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
请教关于Windows下使用odbc连接 ms sql时使用字符串连接的问题

昨天开始想连接数据库试试,
先编译examples里面的sqlquerymodel这个例子,编译并运行成功。后来想改成odbc连接的就一直不成功。
网络上说可能是odbc驱动没有编译,于是进plugins-sqldriver-odbcdriver进去编译odbc 的驱动,编译没啥问题。

然后尝试修改程序还是连接不成功。
部分代码如下:
  1. QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
  2.     db.setDatabaseName("链接字符串");

不行
后来新建系统dsn也不行 然后建立文件dsn并将dsn放到exe目录下
尝试
  1. db.setDatabaseName("dsn名称");
  2. db.setDatabaseName("dsn名称.dsn");
  3. db.setDatabaseName(".\dsn名称.dsn");

还是不可以,今天在论坛上找了找以前的帖子。发现按照版主的提示使用如下的字符串连接就可以:
MSSQL的话,可用ODBC连接,或者像Access那样连接。
DRIVER={SQL Server};SERVER=192.168.0.1;UID=sa;PWD=111111;DATABASE=xxxx

请问,这个字符串有什么讲究么?为何用ado的链接字符串就不行呢,哪里有说明啊?
[ 此帖被rcyboom在2009-11-13 13:15重新编辑 ]
离线fengzhishang

只看该作者 1楼 发表于: 2009-11-13
你可以贴上你的源码不,不然人家怎动手
离线XChinux

只看该作者 2楼 发表于: 2009-11-13
QString getMSSQLConnectionString(const QString &host, const QString &user,
        const QString &pass, const QString &dbname)
{
    return QString("DRIVER={%1};SERVER=%2;DATABASE=%3;UID=%4;PWD=%5")
            .arg("SQL Server")
            .arg(host).arg(dbname).arg(user).arg(pass);
}

使用的时候
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabseName(getMSSQLConnectionString(host,  user, pass, dbname));
db.open()
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线rcyboom

只看该作者 3楼 发表于: 2009-11-15
谢谢,我知道按照版主的肯定可以,我就想问问为何使用delphi或vc的链接字符串就不行。这个有啥区别,有啥讲究。哪里可以找到类似的说明?
离线rcyboom

只看该作者 4楼 发表于: 2009-11-15
还有一个问题,就是我使用demos里面的sqldriver这个例子,可以显示出有odbc的驱动和sqllite的驱动。可是我在里面新建一个odbc链接的时候,它会报出 Microsoft dbc driver:odbc驱动程序没有找到还是啥错误。
我想问一下,如果在Windows下,自己编译的qt。除了要编译sql、odbc driver for sql plugs之外还有啥额外的工作要做么?
系统的odbc驱动肯定有了,因为我使用delphi、vs2008开发程序都没啥问题,为啥用qt就不行呢。
是否还有其他额外的诀窍啊。
离线rcyboom

只看该作者 5楼 发表于: 2009-11-17
在qtcenter上也问了一下,有位好心人给了一个地址:
http://www.connectionstrings.com/
专门介绍各种连接字符串的,还有工具可以生产,值得一看!
快速回复
限100 字节
 
上一个 下一个