在C:\Windows\SysWOW64下找到:odbcad32.exe
这个文件,双击打开。
点击添加按钮,进入“创建新数据源导向”
选择数据库驱动程序
进入如下页面,在名称,描述,和服务器三个位置分别自己写描述信息。需要注意的是在输入服务器的时候,服务器的名称应该在启动SqlServer数据库管理程序时的服务器名称一样。
单击“完成”按钮,显示如下界面:
使用SQL Server Management Studio连接数据库
下面通过代码实现QT与SQL Server的连接访问数据库:
方法一:通过主机名和用户名密码来建立连接。
#ifndef CONNECTION_H
#define CONNECTION_H
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
static bool createConnection()
{
// 创建一个数据库连接,使用“connection1”为连接名
QSqlDatabase db1 = QSqlDatabase::addDatabase("QODBC", "connection1");
db1.setHostName("localhost");
//如果已经设定DSN,可以写为QString::fromLocal8Bit("DSN数据源名称")
QString dsn=QString::fromLocal8Bit("SQL Server");//如果未设定DSN,则应写为:QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=localhost;DATABASE=test");
db1.setDatabaseName(dsn);
db1.setUserName("sa");
db1.setPassword("******");
if(!db1.open())
{
QMessageBox::critical(0,QObject::tr("Database Error"),db1.lastError().text());
return false;
}
QSqlQuery query1(db1);
query1.exec("create table student (id int primary key, "
"name varchar(20))");
query1.exec("insert into student values(0, 'LiMing')");
query1.exec("insert into student values(1, 'LiuTao')");
query1.exec("insert into student values(2, 'WangHong')");
qDebug() << "connection1:";
query1.exec("select * from student");
while(query1.next())
{
qDebug() << query1.value(0).toInt() << query1.value(1).toString();
}
return true;
}
#endif // CONNECTION_H
方法二:通过DSN建立连接
// 创建一个数据库连接,使用“connection1”为连接名
QSqlDatabase db1 = QSqlDatabase::addDatabase("QODBC", "connection1");
QString dsn=QString::fromLocal8Bit("SQL Server");
db1.setDatabaseName(dsn);
if(!db1.open())
{
QMessageBox::critical(0,QObject::tr("Database Error"),db1.lastError().text());
return false;
}
QSqlQuery query1(db1);
query1.exec("create table student (id int primary key, "
"name varchar(20))");
query1.exec("insert into student values(0, 'LiMing')");
query1.exec("insert into student values(1, 'LiuTao')");
query1.exec("insert into student values(2, 'WangHong')");
return true;
附:
ODBC连接
适合数据库类型 连接方式
access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"
dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"
MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"
MS text "Driver={microsoft textdriver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;PersistSecurityInfo=false;"
Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"
MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"
SQLite"Driver={SQLite3 ODBC Driver};Database=D:\SQLite\*.db" PostgreSQL "Driver={PostgreSQL ANSI};server=127.0.0.1;uid=admin;pwd=pass;database=databaseName"
OLEDB连接
适合的数据库类型 连接方式
access "Provider=microsoft.jet.oledb.4.0;datasource=your_database_path;user id=admin;password=pass;"
oracle "Provider=OraOLEDB.Oracle;datasource=dbname;user id=admin;password=pass;"
MS SQL Server "Provider=SQLOLEDB;datasource=machinename;initial