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
// 包含命令信息的 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();
// 包含命令信息的 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 數據
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();
}
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();
}
Last updated