天天看點

在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:

在使用資料庫時,需要檢視安裝的QT中支援的驅動清單。一般可以在QT安裝目錄中的plugins/sqldrivers檔案夾中檢視所有的驅動插件檔案。

本文重點不在此,故不再細述。

在xxx.pro工程檔案中需要添加如下:

QT       += sql
           

連接配接SQLite資料庫:

該資料庫為輕量級資料庫,使用友善。代碼如下:

#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>

static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("my.db");
    if (!db.open()) {
        QMessageBox::critical(0, "Cannot open database1",
                              "Unable to establish a database connection.", QMessageBox::Cancel);
        return false;
    }
    QSqlQuery query;
    // 建立登入使用者表
    query.exec("create table user (username varchar primary key, passwd varchar)");
    query.exec("insert into user values('admin', 'root')");return true;
}
           

編譯之後,會在目錄下生成一個my.db的資料庫檔案。資料庫中有一個名為user的表。 如果要同時對兩個不同的資料庫檔案進行操作,則:

#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>

static bool createConnection()
{
    // 建立一個資料庫連接配接,使用“connection1”為連接配接名
    QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE", "connection1");
    db1.setDatabaseName("my1.db");
    if (!db1.open()) {
        QMessageBox::critical(0, "Cannot open database1",
                              "Unable to establish a database connection.", QMessageBox::Cancel);
        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')");

    // 建立另一個資料庫連接配接,要使用不同的連接配接名,這裡是“connection2”
    QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE", "connection2");
    db2.setDatabaseName("my2.db");
    if (!db2.open()) {
        QMessageBox::critical(0, "Cannot open database1",
                              "Unable to establish a database connection.", QMessageBox::Cancel);
        return false;
    }

    // 這裡要指定連接配接
    QSqlQuery query2(db2);
    query2.exec("create table student (id int primary key, "
                "name varchar(20))");
    query2.exec("insert into student values(10, 'LiQiang')");
    query2.exec("insert into student values(11, 'MaLiang')");
    query2.exec("insert into student values(12, 'ZhangBin')");
    return true;
}
           

連接配接SQL Server資料庫:

部分摘自 點選打開連結

前提工作:

安裝了SQL Server 2008,并在SQL Server中建立了資料庫MyDB

Qt通過ODBC連接配接SQL Server 2008概述:

Qt通過ODBC連接配接資料庫時,使用的資料庫名不是直接寫入資料庫名稱,而是DSN名。

DSN名的使用方式有兩種:

1、在作業系統中配置DSN;

2、在Qt程式代碼中采用DSN連接配接字元串直接連接配接ODBC資料庫。

下面詳細介紹在作業系統中配置DSN方式下連接配接SQL Server 2008的操作過程

在作業系統中配置DSN

進入管理工具中選擇ODBC資料源

在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:
在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:
在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:

然後添加

在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:
在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:
在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:
在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:

其中在最後連接配接哪一個SQLServer伺服器,如果已經在SQLServer2008中已經配置完成,則會出現要選擇伺服器。

在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:

這裡的登入ID和密碼是同在SQLServer2008中配置的一樣。

在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:

如果已經建立好資料庫,這裡會出現要待選的資料庫。

在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:
在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:
在QT中使用資料庫連接配接SQLite資料庫:連接配接SQL Server資料庫:

至此為止,QTDSN已經配置完成。 然後在QT中進行如下配置:

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    QString dsn = QString::fromLocal8Bit("QTDSN");
    db.setHostName("127.0.0.1");
    db.setDatabaseName(dsn);
    db.setUserName("sa");
    db.setPassword("123456");
           

這樣便連結完成

#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>

static bool createConnection()
{
    
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    QString dsn = QString::fromLocal8Bit("QTDSN");
    db.setHostName("127.0.0.1");
    db.setDatabaseName(dsn);
    db.setUserName("sa");
    db.setPassword("123456");
    if (!db.open()) {
        QMessageBox::critical(0, "Cannot open database1",
                              "Unable to establish a database connection.", QMessageBox::Cancel);
        return false;
    }
    QSqlQuery query;
    // 建立登入使用者表
    query.exec("select * from  user");
    while(query.next()){
	qDebug()<<query.value(0).toString();
	qDebug()<<query.value(1).toString();
    }return true;
}