ProudNet.Cn
WebsiteProud ConsoleLanguage
  • 🌐ProudNet
    • ProudNet 簡介
    • 下載並安裝
      • ProudNet授權認證方法
      • AMI
    • 項目設定
      • C++
      • C#
      • Mac Xcode
      • Linux
      • Unity3D
        • iOS 建置
      • Unreal Engine 4
      • 運行 PIDL 編譯器
    • 使用 ProudNet
      • 伺服器和客戶端
        • 如何使用伺服器
        • 如何使用客戶端
      • RMI
        • 如何使用RMI
      • PIDL
        • 如何使用PIDL
      • 事件處理
      • 通訊訊息
      • P2P 通訊
        • 如何使用P2P通訊
    • 活用 ProudNet
      • 如何使用它
      • 性能小貼士
    • 在 ProudNet 中使用 DB
      • DB Cache System ver.2
        • DB Cache 理論和理解
        • DB Cache 安裝和網絡設置
        • DB Cache 伺服器和用戶端
        • DB Cache 使用與活用
          • DB Cache 活用法
      • ADO API
      • ODBC API
    • ProudNet 實用程式
  • ProudNet note
    • 技術說明
      • 對主循環的理解
      • 配置服務器防火牆
      • 加密和解密
      • 發生錯誤時的應對事項
      • 錯誤信息列表
      • 同步角色位置
      • 客戶端與服務器通信
      • MiniDump (Error Dump System)
      • [1.6 版本] 服務器間 LAN 通訊器
    • 詞彙表
    • Sample 例題
  • 🌐ProudChat
    • 介紹及使用指南
    • 下載 SDK
      • C++
      • C#
      • Unity3D
      • Unreal Engine 4
Powered by GitBook
On this page
  • 連接DB
  • 使用DB
  • - 直接使用Query
  • - 使用Stored procedure
  • - 讀取 CAdoRecordset 數據
  1. ProudNet
  2. 在 ProudNet 中使用 DB

ADO API

PreviousDB Cache 活用法NextODBC API

Last updated 1 year ago

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

下面的程式碼是基於進行解釋的。

連接DB

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

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();
}

🌐
git 範例專案
Connection Strings