• 6113阅读
  • 4回复

release以后无法连接sql server2000,用的qodbc。 [复制链接]

上一主题 下一主题
离线mxjknow
 

只看楼主 倒序阅读 楼主  发表于: 2012-05-17
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2012-05-21) —
连接数据代码如下:

test_Weather为ODBC数据源名称。
在本机上release可以连接数据库,打开程序先弹出驱动的名称的对话框("QSQLITE", "QODBC3", "QODBC")
在别的电脑上运行release的话,无法弹出对话框,因为没有可用的数据库驱动。
附上release的压缩包里面还有我的数据库一共5M,各位大大谁能帮我在别的电脑上弹出驱动的名称,就好了,
现在我在别的电脑上根本没办法加载成功数据库驱动,
我把qsqlodbc4.dll等一些驱动都放在release目录下的sqldrivers里了,
在网上也查询了很多,还是没办法在别的电脑上加载,谁能帮忙下,谢谢了,跪谢啊ORZ。
release .rar (5897 K) 下载次数:8 WeatherInfo.rar (5 K) 下载次数:4
离线mxjknow

只看该作者 1楼 发表于: 2012-05-17
求助啊
离线mxjknow

只看该作者 2楼 发表于: 2012-05-20
结贴,下载更高版本的SDK,用其编译问题解决
出现问题的版本:qt-sdk-win-opensource-2010[1].05(1)
没有出现这个问题的版本:QtSdk-offline-win-x86-v1_2_1
离线XChinux

只看该作者 3楼 发表于: 2012-05-21
要注意两点:
1. 在发布机上有SQL Server/SQL Native Client等能连接MSSQL Server 2000的驱动程序,你应该打开odbcad32程序,在里面能看到是否有能连接MSSQL Server 2000的驱动.
2. Qt程序发布时要让能找到qsqlodbc4.dll这个插件.
3. 使用QODBC连接数据库,如果在发布机的ODBC数据源(打开odbcad32设置)中没有设置要连接的数据库的DSN的话,则可以使用如下面形式的字符串来连接数据库,如:



        QString strSQLDriverName;
        QSettings  sts("HKEY_LOCAL_MACHINE\\SOFTWARE\\ODBC\\ODBCINST.INI"
                "\\ODBC Drivers", QSettings::NativeFormat);
        if (sts.contains("SQL Server Native Client 10.0")
                && sts.value("SQL Server Native Client 10.0").toString() == "Installed")
        {
            strSQLDriverName = "SQL Server Native Client 10.0";
        }
        else if (sts.contains("SQL Native Client")
                && sts.value("SQL Native Client").toString() == "Installed")
        {
            strSQLDriverName = "SQL Native Client";
        }
        else if (sts.contains("SQL Server")
                && sts.value("SQL Server").toString() == "Installed")
        {
            strSQLDriverName = "SQL Server";
        }
        if (strSQLDriverName.isEmpty())
        {
               // 无数据库驱动,报错
               return;
        }
       QString strDSN = QString("DRIVER={%1};SERVER=localhost;"
            "DATABASE=test;UID=sa;PWD=123456").arg(strSQLDriverName);
       QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
      db.setDatabaseName(strDSN);
      db.open();
      ......




===========================
注意上面的,SERVER那里应该填写"主机名\实例名".比如BJP-X200\SQLEXPRESS 如果是默认实例,则只写主机名即可.

二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线alexltr

只看该作者 4楼 发表于: 2012-09-16
mark.
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
快速回复
限100 字节
 
上一个 下一个