关于qt4连接sqlserver的问题

whutwyl 2010-08-30 09:00:57
请问有谁遇到过以下问题吗?

在linux下qt4通过QTDS连接sqlserver数据库时,若hostname,databasename,username,password设置正确,可以正常连接,但只要有一个设置错误,程序就会异常退出,
并返回FreeTDS: db-lib: exiting because client error handler returned 0 for msgno 20002.

盼高手指教!~~~~~~~~~~~
...全文
420 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
panda20184 2010-11-11
  • 打赏
  • 举报
回复
MS SQLServer数据库用QODBC:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("DRIVER={SQL SERVER};"
"SERVER=%1;"
"DATABASE=%2;"
"UID=%3;"
"PWD=%4;"
).arg(".") //可以的服务名:(local) loaclhost
.arg("JCZD")
.arg("hskj")
.arg("newtech") );
if(!db.open())
{
QMessageBox::critical(0,"Database error",db.lastError().text());
return;
}
DIE654456 2010-09-20
  • 打赏
  • 举报
回复
Qt连接SQL Server仅靠下面几句似乎不够。
QSqlDatabase pDB = QSqlDatabase::addDatabase("QTDS7");
pDB.setHostName(ui->lineEdit_hostname->text());
pDB.setDatabaseName(ui->lineEdit_datebasename->text());
pDB.setUserName(ui->lineEdit_username->text());
pDB.setPassword(ui->lineEdit_password->text());
我觉得最重要的是设置DNS数据库名称
QString db_dsn = ui->lineEdit_db_dsn->text();
QString db_name = ui->lineEdit_db_name->text();
QString db_server_ip = ui->lineEdit_db_server_ip->text();
QString db_user_name = ui->lineEdit_db_user_name->text();
QString db_user_password = ui->lineEdit_db_user_password->text();

QSqlDatabase db ;
bool open_flag ;

if( db_type == "QT-ODBC:SQL_SERVER")
{
db = QSqlDatabase::addDatabase("QODBC");
if( !db_dsn.isEmpty())
db.setDatabaseName(db_dsn);
else
{
QString str = "DRIVER={SQL SERVER};SERVER="
+ db_server_ip
+ ";DATABASE="
+db_name ;
db.setDatabaseName( str );
db.setUserName( db_user_name );
db.setPassword( db_user_password );
}
}
if( (open_flag=db.open()) )
QMessageBox::information(0, qApp->tr("Open database success"),
qApp->tr("Success to establish a database connection.\n"), QMessageBox::Close);
else
QMessageBox::critical(0, qApp->tr("Cannot open database"),
qApp->tr("Unable to establish a database connection.\n"
"Please read the Qt SQL driver documentation \n"
"for information how to build it.\n\n"
"Click Cancel to exit."), QMessageBox::Cancel);
whutwyl 2010-09-20
  • 打赏
  • 举报
回复
连接过程如下:
QSqlDatabase pDB = QSqlDatabase::addDatabase("QTDS7");
pDB.setHostName(ui->lineEdit_hostname->text());
pDB.setDatabaseName(ui->lineEdit_datebasename->text());
pDB.setUserName(ui->lineEdit_username->text());
pDB.setPassword(ui->lineEdit_password->text());

if ( !pDB.open() )
{
QMessageBox::warning(this, " ","failed",QMessageBox::Ok);
}else{
QMessageBox::information(this, " ","success",QMessageBox::Ok);
}
aoxuehan0424 2010-09-03
  • 打赏
  • 举报
回复
你是怎么打开的?
我记得调用.open()通过返回值可以判断啊~

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧