ADO API

ProudNet DB์— ์žˆ๋Š” ADO Wrapper API ๋Š” Microsoft ActiveX Data Object (ADO)๋ฅผ C++ ์–ธ์–ด์—์„œ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ง„ 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๋ผ๋Š” Column์„ ๊ฐ€์ง„
// UserData ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


// ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘
conn.BeginTrans();

// ์ฟผ๋ฆฌ ์‹คํ–‰ ์ฝ”๋“œ
// ์•„๋ž˜ ์˜ˆ์‹œ๋Š” ํ…Œ์ŠคํŠธ ์šฉ ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.
// ํ•ด๋‹น ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
// DB์— UserId, Password, Country๋ผ๋Š” Column์„ ๊ฐ€์ง„
// 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();

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

Last updated

Was this helpful?