Docs官方網站 ↗
中文

ADO API

ProudNet DB中的ADO Wrapper API是爲了在C++語言中輕鬆處理Microsoft ActiveX Data Object(ADO)而製作的API,可以更容易地利用ADO訪問DBMS。

下面的程式碼是基於git 範例專案進行解釋的。

連接DB

作爲參數進入Open函數的語句遵循Connection Strings規則。

Proud::CAdoConnection conn;

// MSSQL
conn.Open(L"Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=ProudAdo-Test;Trusted_Connection=yes;");
// MYSQL
conn.Open(L"Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Port=3306;Database=proudado-test;User ID=proud;Password=proudnet123;Option=3;", Proud::DbmsType::MySql);

使用DB

- 直接使用Query

// 這是一個測試查詢。
// 爲了使用該查詢
// DB 有名為 UserId、Password 和 Country 的欄位
// UserData 表必須存在。


// 開始交易
conn.BeginTrans();

// 查詢執行程式碼
// 下面的範例是用於測試目的的查詢。
// 爲了使用該查詢
// DB 有名為 UserId、Password 和 Country 的欄位。
// UserData 表必須存在。
conn.Execute(Proud::String::NewFormat(L"insert into UserData (UserID, Password, Country) VALUES(%s, %s, %d)", L"test", L"password", 1));

// 交易 commit
conn.CommitTrans();

- 使用Stored procedure

MSSQL

// 包含命令信息的 CAdoCommand
Proud::CAdoCommand cmd;
// 包含 Return 數據的 CAdoRecordset
Proud::CAdoRecordset rec;

// 必須存在名爲AddUserData的procedure。
cmd.Prepare(conn, L"AddUserData");

// 添加參數 。
cmd.Parameters[1] = L"test";
cmd.Parameters[2] = L"password";
cmd.Parameters[3] = 1;

// 運行 procedure
cmd.Execute(rec);

rec.Close();

MYSQL

// 包含命令信息的 CAdoCommand
Proud::CAdoCommand cmd;
// 包含 Return 數據的 CAdoRecordset
Proud::CAdoRecordset rec;

// 必須存在名爲AddUserData的procedure。
cmd.Prepare(conn, L"AddUserData");

// 與MSSQL不同,必須呼叫Append Parameter。
// Need to call AppendParameter instead of MSSQL.
cmd.AppendParameter(L"InUserID", ADODB::adVarWChar, ADODB::adParamInput, L"test", wcslen(L"test"));
cmd.AppendParameter(L"InPassword", ADODB::adVarWChar, ADODB::adParamInput, L"password", wcslen(L"password"));
cmd.AppendParameter(L"InCountry", ADODB::adInteger, ADODB::adParamInput, 1);

cmd.Execute();

rec.Close();

- 讀取 CAdoRecordset 數據

MSSQL

Proud::AdoRecordset rec;
// 同樣,DB中必須存在UserData表。
rec.Open(conn, Proud::DbOpenFor::OpenForReadWrite, L"select * from UserData");

Proud::String strID, strPassword, strCountry;
while (rec.IsEOF() == false)
{
	strID = ((Proud::String)rec.FieldValues[L"UserID"]).GetString();
	strPassword = ((Proud::String)rec.FieldValues[L"Password"]).GetString();
	strCountry = ((Proud::String)rec.FieldValues[L"Country"]).GetString();
	
	wprintf(L"UserID : %s, Password : %s, Country : %s\n", strID.GetString(), strPassword.GetString(), strCountry.GetString());
	
	rec.MoveNext();
}

MYSQL

Proud::AdoRecordset rec;
// 同樣,DB中必須存在UserData表。
rec.Open(conn, Proud::DbOpenFor::OpenForReadWrite, L"select * from UserData");

Proud::String strID, strPassword, strCountry;
while (rec.IsEOF() == false)
{
	strID = rec.FieldValues[L"UserID"];
	strPassword = rec.FieldValues[L"Password"];
	strCountry = rec.FieldValues[L"Country"];
	
	wprintf(L"UserID : %s, Password : %s, Country : %s\n", strID.GetString(), strPassword.GetString(), strCountry.GetString());
	
	rec.MoveNext();
}

請輸入搜尋關鍵字。