TNB Library
クラス | 公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
CTinySqlAccessor クラス

簡易 SQL アクセサクラス [詳解]

#include <TnbTinySqlAccessor.h>

+ CTinySqlAccessor の継承関係図

クラス

class  CColumnIndex
 簡易 SQL アクセサ用カラムインデックス. [詳解]
 
class  CPreparedStatement
 簡易 SQL アクセサ用プリペアドステートメント. [詳解]
 
class  CResultSet
 簡易 SQL アクセサ用結果セット管理. [詳解]
 
class  CReturnCode
 簡易 SQL アクセサ用戻り値管理. [詳解]
 
class  CStatement
 簡易 SQL アクセサ用ステートメント. [詳解]
 

公開型

typedef TNB::CPointerHandleBaseT< SQLHSTMT, TPhFreeStmtHandle > CStmtHandle
 簡易 SQL アクセサ用 STMT ハンドルハンドル. [詳解]
 
enum  EType {
  Type_Null = SQL_TYPE_NULL , Type_Binary = SQL_BINARY , Type_AsciiString = SQL_CHAR , Type_UnicodeString = SQL_WCHAR ,
  Type_DoubleFloat = SQL_DOUBLE , Type_Float = SQL_FLOAT , Type_Integer = SQL_INTEGER , Type_Short = SQL_SMALLINT ,
  Type_TimeStamp = SQL_TYPE_TIMESTAMP , Type_Bit = SQL_BIT
}
 値種類 [詳解]
 

公開メンバ関数

bool Commit (void)
 [設定] コミット. [詳解]
 
bool Connect (LPCTSTR lpszConnect, SQLUSMALLINT options=SQL_DRIVER_NOPROMPT)
 [設定] 接続. [詳解]
 
bool Connect (LPCTSTR lpszDataBaseName, LPCTSTR lpszUserName, LPCTSTR lpszPassword)
 [設定] 接続. [詳解]
 
bool Connect (LPCTSTR lpszDriverName, LPCTSTR lpszDataBaseName, LPCTSTR lpszUserName, LPCTSTR lpszPassword, SQLUSMALLINT options=SQL_DRIVER_NOPROMPT)
 [設定] 接続. [詳解]
 
CStatement CreateStatement (void)
 [作成] ステートメント作成. [詳解]
 
 CTinySqlAccessor (void)
 コンストラクタ. [詳解]
 
bool Disconnect (void)
 [設定] 切断. [詳解]
 
CReturnCode GetLastReturnCode (void) const
 [取得] 戻り値詳細取得. [詳解]
 
bool IsAutoCommit (void)
 [取得] 自動コミット状態確認 [詳解]
 
bool IsConnecting (void) const
 [確認] 接続中か? [詳解]
 
bool IsStarted (void) const
 [確認] 開始している?. [詳解]
 
CPreparedStatement PreparedStatement (LPCTSTR lpszSql)
 [作成] プリペアドステートメント作成. [詳解]
 
bool Rollback (void)
 [設定] ロールバック. [詳解]
 
bool SetAutoCommit (bool isEnable)
 [設定] 自動コミット設定. [詳解]
 
void SetQueryTimeout (DWORD tm)
 [設定] タイムアウト設定. [詳解]
 
bool Start (void)
 [設定] 開始. [詳解]
 
bool Stop (void)
 [設定] 停止. [詳解]
 
 ~CTinySqlAccessor (void)
 デストラクタ. [詳解]
 

静的公開メンバ関数

static SQLTCHAR * GetSqlChar (CStr &_s, size_t len=0)
 [変換] 文字列ポインタ取得. [詳解]
 
static CStr SystemTimeToString (const SYSTEMTIME &time)
 [変換] 時間文字列化. [詳解]
 

詳解

簡易 SQL アクセサクラス

データベースに接続し、 SQL を実行することが出来ます。
戻り値を取得することが出来ます。
使用例(SELECT)
// test-db というデータベースに接続
bool r = sql.Connect(_T("test-db"),_T("user"),_T("pass"));
CTinySqlAccessor::CReturnCode rc = sql.GetLastReturnCode();
if ( r ) {
// SQL 文を実行
CTinySqlAccessor::CStatement stmt = sql.CreateStatement();
rc = sql.GetLastReturnCode();
if ( stmt.IsValid() ){
r = stmt.Execute(_T("SELECT * FROM Table_1"));
rc = stmt.GetLastReturnCode();
if ( r ) {
// 結果セットを取得
CTinySqlAccessor::CResultSet rs = stmt.GetResultSet();
ASSERT( rs.IsValid() );
INDEX idx = rs.FindColumn(_T("SENSOR_TIME")); // SENSOR_TIME というラベルのカラムのインデックスを取得.
while ( rs.Next() ) {
int s1 = rs.GetInt(_T("SENSOR_ID"); // SENSOR_ID というラベルのカラムから数値取得
CStr tm = rs.GetString(idx); // SENSOR_TIME というラベルのカラムから時間情報を文字列で取得
CStr s2 = rs.GetString(4); // カラム4から文字列取得
if ( rs.WasNull() ) {
//カラム4が NULL だ!
TRACE1(" id = %d, <null>\n", s1);
}
else {
TRACE2(" id = %d, [%s]\n", s1, s2);
}
}
}
}
}
TRACE1("ret = %s\n", rc.GetErrorString());
return;
CTinySqlAccessor(void)
コンストラクタ.
TNB::CStrT< TCHAR > CStr
文字列クラス
Definition: TnbStr.h:1785
使用例(INSERT)
// test-db というデータベースに接続
bool r = sql.Connect(_T("test-db"),_T("user"),_T("pass"));
CTinySqlAccessor::CReturnCode rc = sql.GetLastReturnCode();
sql.SetAutoCommit(false); //自動コミット無効
if ( r ) {
// SQL 文を実行
CTinySqlAccessor::CPreparedStatement stmt = sql.PreparedStatement(_T("INSERT INTO Table_1 VALUES(?,?)"));
rc = sql.GetLastReturnCode();
if ( stmt.IsValid() ){
stmt.SetString(2, _T("ABC")); // 二つ目の ? に 'ABC'
loop ( i, 2 ) {
stmt.SetInt(1, 100 + 100); // 一つ目の ? に 100 + i
r = stmt.Execute();
rc = stmt.GetLastReturnCode();
if ( ! r ) {
break;
}
}
}
}
TRACE1("ret = %s\n", rc.GetErrorString());
return;
#define loop(VAR, CNT)
loop構文.
Definition: TnbDef.h:343
覚え書き
Start、Stop時に 環境ハンドル(SQLHENV), DBCハンドル(SQLHDBC) を構築、破棄しています。
必要ファイル
TnbTinySqlAccessor.h
日付
11/05/16 新規作成
12/05/02 読込時の型チェックを強化。
12/06/06 Type_Bit に対応。
12/10/17 SetQueryTimeout() 新規。

TnbTinySqlAccessor.h140 行目に定義があります。

列挙型メンバ詳解

◆ EType

enum EType

値種類

列挙値
Type_Null 

値なし

Type_Binary 

バイナリ

Type_AsciiString 

ASCII文字列

Type_UnicodeString 

UNICODE文字列

Type_DoubleFloat 

64bit double float 実数

Type_Float 

32bit float 実数

Type_Integer 

32bit signed 整数

Type_Short 

16bit signed 整数

Type_TimeStamp 

タイムスタンプ

Type_Bit 

1bit 値

TnbTinySqlAccessor.h145 行目に定義があります。

構築子と解体子

◆ ~CTinySqlAccessor()

~CTinySqlAccessor ( void  )

デストラクタ.

覚え書き
デストラクタ後、本クラスから生成したクラスのインスタンスも正しく動かなくなります。

TnbTinySqlAccessor.h1629 行目に定義があります。

◆ CTinySqlAccessor()

CTinySqlAccessor ( void  )

コンストラクタ.

TnbTinySqlAccessor.h1637 行目に定義があります。

関数詳解

◆ Commit()

bool Commit ( void  )

[設定] コミット.

覚え書き
Start()Connect() している必要があります。
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1894 行目に定義があります。

◆ Connect() [1/3]

bool Connect ( LPCTSTR  lpszConnect,
SQLUSMALLINT  options = SQL_DRIVER_NOPROMPT 
)

[設定] 接続.

指定の設定で、データベースと接続します。

覚え書き
Start() していない場合、スタートします。
引数
lpszConnect接続名.
optionsオプション.
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1789 行目に定義があります。

◆ Connect() [2/3]

bool Connect ( LPCTSTR  lpszDataBaseName,
LPCTSTR  lpszUserName,
LPCTSTR  lpszPassword 
)

[設定] 接続.

指定の設定で、データベースと接続します。

覚え書き
Start() していない場合、スタートします。
引数
lpszDataBaseNameデータベース名.
lpszUserNameユーザー名
lpszPasswordパスワード
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1762 行目に定義があります。

◆ Connect() [3/3]

bool Connect ( LPCTSTR  lpszDriverName,
LPCTSTR  lpszDataBaseName,
LPCTSTR  lpszUserName,
LPCTSTR  lpszPassword,
SQLUSMALLINT  options = SQL_DRIVER_NOPROMPT 
)

[設定] 接続.

指定の設定で、データベースと接続します。

覚え書き
Start() していない場合、スタートします。
引数
lpszDriverNameドライバー名.
lpszDataBaseNameデータベース名.
lpszUserNameユーザー名
lpszPasswordパスワード
optionsオプション.
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1820 行目に定義があります。

◆ CreateStatement()

CStatement CreateStatement ( void  )

[作成] ステートメント作成.

戻り値
ステートメント。 CStatement::IsValid() で成功の有無がわかります。

TnbTinySqlAccessor.h1841 行目に定義があります。

◆ Disconnect()

bool Disconnect ( void  )

[設定] 切断.

Connect() で行った接続を切断します。

覚え書き
切断前にコミットしますので、変更を無効にしたい場合、先に Rollback() をコールする必要があります。
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1734 行目に定義があります。

◆ GetLastReturnCode()

CReturnCode GetLastReturnCode ( void  ) const

[取得] 戻り値詳細取得.

戻り値
戻り値.

TnbTinySqlAccessor.h1916 行目に定義があります。

◆ GetSqlChar()

static SQLTCHAR * GetSqlChar ( CStr _s,
size_t  len = 0 
)
static

[変換] 文字列ポインタ取得.

CStr から SQLTCHAR のポインタを取得します( CStr::GetBuffer() を使用 )。

覚え書き
通常使う必要ありません。
引数
[in,out]_s対象。
[in]lenバッファサイズ。
戻り値
文字列ポインタ。 使用後、 _s に対し CStr::ReleaseBuffer() を使用してください。

TnbTinySqlAccessor.h1944 行目に定義があります。

◆ IsAutoCommit()

bool IsAutoCommit ( void  )

[取得] 自動コミット状態確認

覚え書き
Start()Connect() している必要があります。
戻り値
true自動コミット状態が有効。
false自動コミット状態が無効、か、エラーです。エラーか否かは GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1862 行目に定義があります。

◆ IsConnecting()

bool IsConnecting ( void  ) const

[確認] 接続中か?

戻り値
true接続中。
false否。

TnbTinySqlAccessor.h1722 行目に定義があります。

◆ IsStarted()

bool IsStarted ( void  ) const

[確認] 開始している?.

Start()Connect() を実行すると、SQLアクセス準備が開始されます。

戻り値
true開始している
falseしていない

TnbTinySqlAccessor.h1647 行目に定義があります。

◆ PreparedStatement()

CPreparedStatement PreparedStatement ( LPCTSTR  lpszSql)

[作成] プリペアドステートメント作成.

引数
lpszSqlSQL 文
戻り値
プリペアド ステートメント。 CStatement::IsValid() で成功の有無がわかります。

TnbTinySqlAccessor.h1851 行目に定義があります。

◆ Rollback()

bool Rollback ( void  )

[設定] ロールバック.

覚え書き
Start()Connect() している必要があります。
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1906 行目に定義があります。

◆ SetAutoCommit()

bool SetAutoCommit ( bool  isEnable)

[設定] 自動コミット設定.

覚え書き
Start()Connect() している必要があります。
引数
isEnabletrue なら自動コミットを有効します。 false なら無効にします。
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1881 行目に定義があります。

◆ SetQueryTimeout()

void SetQueryTimeout ( DWORD  tm)

[設定] タイムアウト設定.

引数
tmQUERYタイムアウト値(s)

TnbTinySqlAccessor.h1832 行目に定義があります。

◆ Start()

bool Start ( void  )

[設定] 開始.

覚え書き
本メソッドを使わなくても、 Connect() を使うことで、自動的にSQLアクセス準備が開始されます。
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1690 行目に定義があります。

◆ Stop()

bool Stop ( void  )

[設定] 停止.

Start()Connect() を実行すると、SQLアクセス準備が開始されます。 このメソッドをコールすると、停止します。 また、接続されていた場合、切断も行います。

覚え書き
停止すると、本クラスから生成したクラスのインスタンスも正しく動かなくなります。
戻り値
true成功。詳細は GetLastReturnCode() で得られます。
false失敗。詳細は GetLastReturnCode() で得られます。

TnbTinySqlAccessor.h1661 行目に定義があります。

◆ SystemTimeToString()

static CStr SystemTimeToString ( const SYSTEMTIME time)
static

[変換] 時間文字列化.

SYSTEMTIME を Timestamp で使用する文字列(YYYY-MM-DD HH:MM:SS)に変換します。

引数
time時間.
戻り値
文字列。

TnbTinySqlAccessor.h1927 行目に定義があります。