QT连接SQLserver数据库和设置数据源名称(DSN)的方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编写外部应用程序来查询与操作数据库数据1、打“开控制面板”,找到“管理工具”。

2、进入“管理工具”,找到“数据源(ODBC)”,双击进入“ODBC 数据库管理器”。

3、点击“添加按钮”,进入“创建新数据源向导”。

4、选择数据库驱动程序,因为是微软的SQLServer数据库,所以选择驱动为SQLServer。点击完成。

5、进入如下页面,在名称,描述,和服务器三个位置分别自己写描述信息。需要注意的是在输入服务器的时候,服务器的名称应该在启动SqlServer数据库管理程序时的服务器名称一样。如下图是服务器名是5F-CAD32。点击下一步。

6、用户登录验证,选择WindowsNT验证。也可以用ID和密码登录但是要创建用户名和密码,创建用户名和密码

方法如下图。点击下一步。

附:在SqlServer2008的客户端创建一个登录用户的方法。

把用户角色设置为public和sysadmin系统管理者。

7、选择需要用到的数据库。下拉列表列出了所有可以连接的数据库。

8、点击下一步。其余选项默认,点击完成就可以。

显示下面的画面

点击测试,显示测试成功。则我们的数据源DSN创建成功。

9、写外部应用程序以ODBC方式访问数据库数据(这里写的是qt程序,要注意的是~\plugins\sqldrivers\下应该有qsqlodbcd4.dll(debug)或qsqlodbc4.dll,他们是qt访问SqlServer数据库的库文件)。

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include

#include

#include

#include

#include

{

/* 方法一:通过DSN建立连接。DSN即数据源名称。

//下面例子sql server上的MessageFile数据库上。程序中指定此连接的名称为dbTemp,可以随便写。

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "dbTemp");

//指定数据源名称为:MSSQLServer

QString dsn = QString::fromLocal8Bit("MSSQLServer");

db.setDatabaseName(dsn);

if(!db.open()) {

QMessageBox::about(0, QObject::tr("Database Error"),stError().text());

//如果dsn名设错,将会在db.open()时出现“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified QODBC3: Unable to connect”

//“[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序QODBC3: Unable to connect”错误。

}

*/

//* 方法二:通过主机名和用户名密码来建立连接。

//下面例子连接到 172.26.5.51 上的sql server名为test的数据库上。程序中指定此连接的名称为dbTemp,可以随便写。

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "dbTemp2");

//指定服务器主机的IP地址,即数据库在哪个电脑上。可以是自己电脑的IP地址。

db.setHostName("172.26.5.51");

//ODBC连接SQL Server驱动的格式。"Driver={sql

server};server=servername;database=dbname;uid=sa;pwd=pass;"

QString dsn = QString::fromLocal8Bit("DRIVER={SQL

SERVER};SERVER=172.26.5.51;DATABASE=test");

//如果已经设定DSN,可以写为QString::fromLocal8Bit("DSN数据源名称")

db.setDatabaseName(dsn);

//即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤

//还要注意这里的用户名要有创建表的权限,不然创建下面的表student会不成功。

db.setUserName("aisq");

db.setPassword("aisq");

if(!db.open()) {

QMessageBox::about(0, QObject::tr("Database Error"),stError().text());

}

//*/

else

{

QSqlQuery query(db); //以下执行相关 sql语句

query.exec("if exists student drop student");

query.exec("create table student(id int primary key,name varchar(20))");

query.exec("insert into student values(2,'xiafang')");

query.exec("insert into student values(7,'wanghua')");

query.exec("insert into student values(3,'aisq')");

query.exec("insert into student values(4,'fucan')");

query.exec("select id,name from student where id>=2");

while(query.next()){

int id=query.value(0).toInt(); //query.value(0)中0表示第一个字段的值,即是id的值

QString name=query.value(1).toString().trimmed();

qDebug()<<"id="<

相关文档
最新文档