QT连接SQL Server

C:\Windows\SysWOW64下找到:odbcad32.exe
这个文件,双击打开。
点击添加按钮,
进入“创建新数据源导向”



选择数据库驱动程序



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


单击“完成”按钮,显示如下界面:




点击“测试数据源”,如显示“测试成功”,则表示数据源 DSN 创建成功


使用SQL Server Management Studio连接数据库


右键单击登录名创建新的登录名,如‘ sa ’,单击“确定”



下面通过代码实现QTSQL 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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值