當前位置:首頁 » 編程語言 » qt與sql連接查詢
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

qt與sql連接查詢

發布時間: 2022-04-30 04:32:02

⑴ QT中使用sql語句查詢時,表名通過一個參數來傳遞的話,這個sql語句怎麼寫

select * from lineedit into var
lineedit為表名,var為參數,

⑵ 詳解Qt資料庫的鏈接與如何使用SQL

雖然在window下是可以用DOS命令建立並操作資料庫,但是當涉及到一些比較復雜的數據操作的時候還是比較繁瑣,這里做個簡單的示例,這里對mySQL的Qt配置不做多言,貧道使用的Qt5.8已經自帶配置文件了。

⑶ qt 能直接連sql2008嗎

1. 確定QT編譯時已經編譯了QtSql。(默認的qt5,都已經支持了,如下目錄:C:\Qt\Qt5.3.0\5.3\msvc2013_opengl\plugins\sqldrivers里有相應的驅動動態庫

也可以通過如下代碼測試qt5是否支持SqlServer

#include <QApplication>

#include <QSqlDatabase>

#include <QStringList>

#include <QDebug>

int main(int argc, char* argv[])

{

QApplication app(argc, argv);

qDebug() << "Available drivers:";

QStringList drivers = QSqlDatabase::drivers();

foreach(QString driver, drivers) //列出Qt5所有支持的資料庫類型

qDebug() << "\t" << driver;

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

qDebug() << "ODBC driver valid?" << db.isValid(); //true為支持

}

輸出結果如下:

"QSQLITE""QMYSQL""QMYSQL3""QODBC""QODBC3""QPSQL""QPSQL7"ODBC driver valid? true

2. 若是沒有編譯,可以手動編譯了qt的ODBC插件。

可以通過編譯qt的時候加上 configure -plugin-sql-odbc來保證,也可以單獨編譯qt安裝包里的~\src\plugins\sqldrivers\odbcqmake -t vclib odbc.pronmake (註:windows中為mingw32-make)編譯後,在~\plugins\sqldrivers\下應該有qsqlodbcd4.dll(debug)或qsqlodbc4.dll

此時,可以用下面的程序,測試一下你的QT目前支持哪些資料庫訪問

二、連接SQLServer

要注意的就是連接資料庫時使用的資料庫名,sqlserver和sqlite、mysql等是不同的,並不是直接寫入資料庫名稱。 而是DSN名。 如果你已經設置好了DSN,可以直接輸入DSN名。 如果沒有,可以採用DSN連接字元串直接連接ODBC資料庫。

1、直接設定DSN的字元串連接資料庫,很簡單。

/**

*函數介紹:創建資料庫連接

*輸入參數:

*返回值:無

*/

bool DataAccess::createConnection()

{

QStringList drivers = QSqlDatabase::drivers();

foreach(QString driver, drivers)

qDebug() << "\t" << driver;

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

qDebug() << "ODBC driver valid?" << db.isValid();

// 注意,對於express版本資料庫, 一定要加\\sqlexpress這種後綴 SERVER=58.67.161.109\\sqlexpress

QString dsn = "DRIVER={SQL SERVER};SERVER=58.67.161.109;DATABASE=RDBS;UID=RDBS_USER;PWD=RDBS_USER_7010387;";

db.setHostName("58.67.161.109"); //資料庫伺服器,我這里不需要

//即使dsn中已經設置了UID和PASSWD,仍然需要執行setUserName和setPassword的步驟

//還要注意這里的用戶名要有創建表的許可權,不然創建下面的表student會不成功。

db.setDatabaseName(dsn); //資料庫名

db.setUserName("RDBS_USER");//登錄名,我再dsn里設置UID和PWD後,就不需要設置了

db.setPassword("RDBS_USER_7010387");//密碼,我再dsn里設置UID和PWD後,就不需要設置了

if(!db.open ())

{

QSqlError error = db.lastError();

QMessageBox::warning (0, "Warning", QString("Failed to open database!Error:%1").arg(error.text()));

returnfalse;

}

returntrue;

}

注意:連接資料庫時, 一直連不上報錯: ConnectionOpen (Invalid Instance()) , 連接無效, 結果發現微軟對express版本資料庫是有限制的, 在SERVER欄位添加\\sqlexpress這樣後綴, 連接OK。

2、手動設置ODBC數據源,然後制定DSN

控制面板->系統和安全->管理工具->數據源(ODBC)

代碼:

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

db.setDatabaseName("testdsn");

db.setUserName("sa");

db.setPassword("scada");

三、下面是ODBC和OLEDB的連接字元串寫法:

1、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 text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=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"

2、OLEDB連接字元串

//適合的資料庫類型 連接方式

access "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"

oracle "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"

MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"

MS text "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties'text;FMT=Delimited'"

⑷ QT中如何用界面對資料庫的直接操作,包括查詢和連接

qt中有qtsql模塊支持該操作,底層一般都是用驅動插件實現的,利用的是sqlite資料庫,相關的類有
qsqldatabase, qsqlquery,qsqlrecord等,謝謝採納

⑸ qt怎麼連接sqlserver

前提:
SQL Server里已經建立了相應的資料庫,有對應的表和數據。

步驟:
1. Qt里新建一個空工程,添加main.cpp文件。
2. 在工程文件(.pro文件)添加一行:QT += sql。
3. 該敲代碼了,代碼如下:
[cpp] view plain
#include <QtGui>
#include <QString>
#include <QTextCodec>
#include <QSqlDatabase>
#include <QtSql>

/*連接資料庫*/
void OpenDatabase()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("DRIVER={SQL SERVER};"
"SERVER=%1;"
"DATABASE=%2;"
"UID=%3;"
"PWD=%4;").arg("QIAN-PC")
.arg("StuManager")
.arg("sa")
.arg("123456"));
if (!db.open())
{

QMessageBox::warning(0, qApp->tr("Cannot open database"),
db.lastError().databaseText(), QMessageBox::Cancel);
}
else
{
qDebug()<<"Connect to Database Success!";
}

}

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

/*設置編碼格式*/
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

OpenDatabase();

QDialog *mainDialog = new QDialog;
QTableView *tableView = new QTableView;
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(tableView);
mainDialog->setLayout(layout);

QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery(QObject::tr("select * from 教師"));
tableView->setModel(model);

mainDialog->adjustSize();
mainDialog->show();

return a.exec();
}
4. 看看運行結果吧。

參考網址:http://hhuayuan.blog.51cto.com/1630327/893415

⑹ windows下QT如何連接sql server資料庫我想在QT上寫了一個程序,想使用sql server 2005資料庫

這個會不會有幫助
http://wenku..com/view/98421fba1a37f111f1855b34.html

⑺ 請我怎樣實現qt和sql server 2014的連接

怎樣實現qt和sql server 2014的連接
步驟:
1. Qt里新建一個空工程,添加main.cpp文件。
2. 在工程文件(.pro文件)添加一行:QT += sql。
3. 該敲代碼了,代碼如下:
[cpp] view plain
#include <QtGui>
#include <QString>
#include <QTextCodec>
#include <QSqlDatabase>
#include <QtSql>

/*連接資料庫*/
void OpenDatabase()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("DRIVER={SQL SERVER};"
"SERVER=%1;"
"DATABASE=%2;"
"UID=%3;"
"PWD=%4;").arg("QIAN-PC")
.arg("StuManager")
.arg("sa")
.arg("123456"));
if (!db.open())
{

QMessageBox::warning(0, qApp->tr("Cannot open database"),
db.lastError().databaseText(), QMessageBox::Cancel);
}
else
{
qDebug()<<"Connect to Database Success!";
}

}

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

⑻ qt中怎麼連接mysql資料庫

1: windows 下登陸mysql 命令行,(1)進入cmd (2) cd mysql 安裝路徑/mysqlserver5.6/bin (3) 使用命令mysql -u root -p 然後根據提示輸入密碼 進入命令行 select user(); //顯示當前用戶 2: 在同一台電腦上利用Qt 訪問資料庫 (1)顯示當前電腦上安裝的資料庫驅動 QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() <<"/t" << driver; (2)QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");/對 QMYSQL進行操作,本函數 有第二個參數 連接名 db.setHostName("localhost");//或127.0.0.1 本主機 db.setPort(3306); db.setDatabaseName("example"); //對資料庫example進行操作 db.setUserName("wangxuetao"); //wangxuetao是一個對example資料庫有操作許可權的賬戶 db.setPassword("3791948"); 於是mysql中增加一個賬戶可使用 Grant all previliges on *.* to 『wangxuetao』@』localhost』 identified by 『3791948』 with grant option; Flush privileges; //更新 (3)db.open() 函數可由於檢測資料庫是否連接成功 cout<DBConnection(); 2. m_sqlquery = new QSqlQuery("",m_sqldb);//statement 1:connect db with sql query 3. if(result == R_OK) 4. { 5. result = m_sqlquery->exec("INSERT INTO children(fname,age) VALUES('A nn2',13)"); 6. if(!result) 7. qDebug()<<" [OK] "<<"EXEC successed"; 8. m_sqlquery->exec("SELECT * FROM children c LIMIT 0,1000"); 9. while(m_sqlquery->next()) 10. { 11. qDebug()<value(0).toString()<value(1). toString(); 12. } 13. }

⑼ 怎樣在Qt下連接讀寫sqlite資料庫

這里以學生信息的錄入與讀取來作為演示,主要目的是演示資料庫的操作,至於數據的顯示等不在演示範圍內,請您自行研究。
首先,在Qt中建立一個圖形界面的程序項目。

然後,我們在命令行下用sqlite命令創建了資料庫 C:\StudentInfo\sutdentdata.db,並且建立了一個資料庫表student,該表有四個欄位ID、Name、Sex、Age,未向表中添加任何數據。
關於sqlite的簡單使用,可以參考我們的另一篇經驗。
2SQLite的簡單使用方法

在讀寫SQLite資料庫中,我們最主要用到的是QSqlDatabase類及QSqlQuery類,前者負責創建資料庫連接並打開資料庫,後者負責執行查詢操作。實際上前者也可以進行查詢操作並將結果返回給QSqlQuery對象,但是Qt並不建議這么做。
在幹活前,依然是先看看Assitant,這是培養獨立解決問題的一個好習慣。

好,下面給 錄入 按鈕的點擊事件編寫代碼。關於如何給按鈕的某一事件進行編碼,可以參考我們另一篇經驗。
首先在.pro文件中加上sql,然後別忘了#include <QSqlDatabase>以及#include <QSqlQuery>。
好了,下面在錄入按鈕的槽中加入如下代碼:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","wconntosqlite");
mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");
if(mydb.open())
{
QSqlQuery query(mydb);
QString sqlstr="insert into student (ID,Name,Sex,Age) values ('"
+ui->le_id->text()+"','"
+ui->le_name->text()+"','"
+ui->le_sex->text()+"',"
+ui->le_age->text()+")";
bool isok=query.exec(sqlstr);
if(isok)
qDebug()<<"數據寫入成功";
}
上面我們先調用了QSqlDatabase的靜態函數addDatabase創建了一個名為wconntosqlite的連接。然後給其傳遞資料庫名稱。
如果資料庫打開成功,就創建一個關聯的QSqlQuery對象,最後由QSqlQuery來執行插入數據工作。
特別注意:QSqlQuery對象的創建必須在mydb open成功以後才行,否則會出錯。
我們來看看效果如何。
4c++怎麼做界面

我們接著來寫查詢按鈕的代碼,輸入以下代碼:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","rconntosqlite");
mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");
if(mydb.open())
{
QSqlQuery query(mydb);
QString sqlstr="select * from student";
bool isok=query.exec(sqlstr);
if(isok)
qDebug()<<"數據讀取成功";

query.first();
QString result="學號:"+query.value(0).toString()+" "
+"姓名:"+query.value(1).toString()+" "
+"性別:"+query.value(2).toString()+" "
+"年齡:"+query.value(3).toString();
ui->lbl_query->setText(result);
}
與寫入數據基本差不多,這里需要特別注意的是query.first();。看看Assistant怎麼說的就知道了。原來,query對象在執行完查詢語句後,query的位置被置於一個不可用的位置,如果想從query中獲取數據,需要設置query到一個可用的記錄中才行。方法有好幾種,這里我們用了first()成員函數。
好,來看看運行結果。
可以看到軟體讀取的數據與控制台窗口的數據是一致的。

我們來總結下Qt操作SQLite資料庫的五步走法決:
第一步,建立一個連接:QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
第二步,關聯資料庫文件:db.setDatabaseName("這里你的資料庫文件路徑")
第三步,打開資料庫:db.open()
第四步,如果資料庫打開成功,就建立一個相關聯的QSqlQuery對象:QSqlQuery query(db)
第五步,執行SQL語句:query.exec("你的SQL語句字元串")

⑽ qt連接sql資料庫的方法。

using
System;
using
System.Data.SqlClient;
namespace
_09_01
{
class
Class_09_01
{
public
static
void
Main(String[]
args)
{
//
連接字元串,讀者可以根據自己情況設置不同的值
string
strConn
=
"Initial
Catalog=Northwind;Data
Source=(local);User
ID=sa;Password=sa";
//
SqlConnection
對象
SqlConnection
conn
=
new
SqlConnection();
conn.ConnectionString
=
strConn;
try
{
//
打開資料庫連接
conn.Open();
Console.WriteLine("成功連接到資料庫!");
Console.WriteLine("數據源:{0}",
conn.DataSource);
Console.WriteLine("資料庫名:{0}",
conn.Database);
Console.WriteLine("客戶端名:{0}",
conn.WorkstationId);
//
在用完了資料庫連接之後記得關閉!
conn.Close();
}
catch
(Exception
e)
{
Console.WriteLine("無法連接到資料庫!報告異常:");
Console.WriteLine(e.Message);
}
}
}
}