sqlserver連接參數(shù):
成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計,有關(guān)企業(yè)網(wǎng)站建設(shè)方案、改版、費用等問題,行業(yè)涉及酒店設(shè)計等多個領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
server:服務(wù)器名稱(或ip)\實例名名稱
uid:用戶名
pwd:密碼
database:數(shù)據(jù)庫名稱
DRIVER={SQL SERVER},這個是數(shù)據(jù)源中可用的驅(qū)動。
相當(dāng)于定義了一個odbc數(shù)據(jù)源。
qt可以使用odbc驅(qū)動去連接sqlserver,先配置好odbc數(shù)據(jù)源,然后在qt里面調(diào)用數(shù)據(jù)源即可連接;
using System; using System.Data.SqlClient; namespace _09_01 { class Class_09_01 { public static void Main(String[] args) { // 連接字符串,讀者可以根據(jù)自己情況設(shè)置不同的值 string strConn = "Initial Catalog=Northwind;Data Source=(local);User ID=sa;Password=sa"; // SqlConnection 對象 SqlConnection conn = new SqlConnection(); conn.ConnectionString = strConn; try { // 打開數(shù)據(jù)庫連接 conn.Open(); Console.WriteLine("成功連接到數(shù)據(jù)庫!"); Console.WriteLine("數(shù)據(jù)源:{0}", conn.DataSource); Console.WriteLine("數(shù)據(jù)庫名:{0}", conn.Database); Console.WriteLine("客戶端名:{0}", conn.WorkstationId); // 在用完了數(shù)據(jù)庫連接之后記得關(guān)閉! conn.Close(); } catch (Exception e) { Console.WriteLine("無法連接到數(shù)據(jù)庫!報告異常:"); Console.WriteLine(e.Message); } } } }
連接長時間不操作是可能會斷開,檢查數(shù)據(jù)庫的配置連接時間,一般會有時間限制,建議你程序啟動需要和數(shù)據(jù)庫交互時,先判斷數(shù)據(jù)庫是否是連接狀態(tài),未連接時重新連接
也可以通過如下代碼測試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所有支持的數(shù)據(jù)庫類型
qDebug() "\t" driver;
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
qDebug() "ODBC driver valid?" db.isValid(); //true為支持
}
輸出結(jié)果如下:
"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\下應(yīng)該有qsqlodbcd4.dll(debug)或qsqlodbc4.dll
此時,可以用下面的程序,測試一下你T目前支持哪些數(shù)據(jù)庫訪問。
二、連接SQLServer
要注意的就是連接數(shù)據(jù)庫時使用的數(shù)據(jù)庫名,sqlserver和sqlite、mysql等是不同的,并不是直接寫入數(shù)據(jù)庫名稱。 而是DSN名。 如果你已經(jīng)設(shè)置好了DSN,可以直接輸入DSN名。 如果沒有,可以采用DSN連接字符串直接連接ODBC數(shù)據(jù)庫。
1、直接設(shè)定DSN的字符串連接數(shù)據(jù)庫,很簡單。
/**
*函數(shù)介紹:創(chuàng)建數(shù)據(jù)庫連接
*輸入?yún)?shù):
*返回值:無
*/
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版本數(shù)據(jù)庫, 一定要加\\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_;";
db.setHostName("58.67.161.109"); //數(shù)據(jù)庫服務(wù)器,我這里不需要
//即使dsn中已經(jīng)設(shè)置了UID和PASSWD,仍然需要執(zhí)行setUserName和setPassword的步驟
//還要注意這里的用戶名要有創(chuàng)建表的權(quán)限,不然創(chuàng)建下面的表student會不成功。
db.setDatabaseName(dsn); //數(shù)據(jù)庫名
db.setUserName("RDBS_USER");//登錄名,我再dsn里設(shè)置UID和PWD后,就不需要設(shè)置了
db.setPassword("RDBS_USER_");//密碼,我再dsn里設(shè)置UID和PWD后,就不需要設(shè)置了
if(!db.open ())
{
QSqlError error = db.lastError();
QMessageBox::warning (0, "Warning", QString("Failed to open database!Error:%1").arg(error.text()));
returnfalse;
}
returntrue;
}
如何在arm嵌入板上用QT連接sqlserver數(shù)據(jù)庫
1、打開sqlserver的企業(yè)管理器或者是SQL server Management Studio
2、服務(wù)器類型選擇:數(shù)據(jù)庫引擎
3、服務(wù)器名稱輸入:localhost或是本機(jī)ip
4、身份驗證選擇:如果沒開混合驗證,選windows身份驗證;如果開了混合驗證,可以用windows身份登錄,也可選選擇SQL server身份驗證。
5、選了SQLserver身份認(rèn)證需要輸入SQL已經(jīng)定義的用戶名和密碼。