要注意两点:
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 如果是默认实例,则只写主机名即可.