準備ステートメントへの値のバインド

2011. 03. 06
int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
int sqlite3_bind_double(sqlite3_stmt*, int, double);
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
int sqlite3_bind_null(sqlite3_stmt*, int);
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);

SQLステートメントでsqlite3_prepare_v2()やその変種へテキスト入力する場合に、以下のテンプレートのいずれかに一致するparameterによって文字を置換することができます。

・?
・?NNN
・:VVV
・@VVV
・$VVV

上記のテンプレートにおいて、NNNは整数文字を、VVVは英数字を表す識別子です。

これらのパラメータの値(『ホストパラメータ名』または『SQLパラメータ』とも呼ばれる)は、ここで定義されているsqlite3_bind_*()ルーチンを使用して設定することができます。

sqlite3_bind_*()ルーチンへの第1引数は常に、sqlite3_prepare_v2()またはその変種から返されるsqlite3_stmtオブジェクトへのポインタです。

第2引数はSQLパラメータのインデックスを設定します。

左端のSQLパラメータは1のインデックスを持っています。

同じ名前のSQLパラメータを複数回使用する場合は、2つ目以降も最初のものと同じインデックスを持ちます。

名付けられたパラメータへのインデックスは、sqlite3_bind_parameter_index() APIを必要に応じて使用して検索することができます。

『?NNN』パラメータへのインデックスは、NNNの値です。

NNNの値は1とsqlite3_limit()パラメータのSQLITE_LIMIT_VARIABLE_NUMBER(デフォルト値:999)の間である必要があります。

第3引数はパラメータへバインドする値です。

第4引数を持つこれらのルーチンにおいて、その値はパラメータのバイト数です。

正確に言うと、その値は値のバイト数であり、文字数ではありません。

第4引数が負の値の場合、文字列の長さは最初のゼロ終端までのバイト数です。

sqlite3_bind_blob()、sqlite3_bind_text()、sqlite3_bind_text16()の第5引数は、SQLiteの処理が完了した後でBLOBまたは文字列の処理に使用するデストラクタです。

デストラクタは、sqlite3_bind_blob()、sqlite3_bind_text()、sqlite3_bind_text16()の呼び出しが失敗した場合でも、BLOBまたは文字列を処理するために呼び出されます。

第5引数が特殊な値SQLITE_STATICの場合、SQLiteは情報は静的なものと前提され、空間の管理や解放をする必要はありません。

第5引数が値SQLITE_TRANSIENTの場合、SQLiteはsqlite3_bind_*()ルーチンが返す前に、すぐに自身のデータのプライベートコピーを作成します。

sqlite3_bind_zeroblob()ルーチンは、ゼロで満たされた長さNのBLOBをバインドします。

zeroblobは処理されている間(ちょうど整数を保持するサイズの)固定されたメモリ量を使用します。

zeroblobはincremental BLOB I/Oルーチンを使用して書かれた後の内容で、BLOBのプレースホルダとして機能するように意図されています。

zeroblobが負の値の場合はBLOBがゼロの長さになります。

prepared statementのためのNULLポインタを指定して、またはsqlite3_reset()より最近に呼び出されたsqlite3_step()のためのprepared statementを指定して、sqlite3_bind_*()ルーチンのいずれかが呼び出された場合、SQLITE_MISUSEが返されます。

sqlite3_bind_()ルーチンが破棄されたprepared statementを渡された場合、未定義でおそらく危険な結果となります。

バインディングはsqlite3_reset()ルーチンによってクリアされません。

バインドされていないパラメータはNULLとして解釈されます。

sqlite3_bind_*ルーチンは、成功した場合にはSQLITE_OKを、何か問題があった場合はerror codeを返します。

SQLITE_RANGEは、パラメータのインデックスが範囲外の場合に返されます。

SQLITE_NOMEMは、malloc()が失敗した場合に返されます。

sqlite3_bind_parameter_count()sqlite3_bind_parameter_name()sqlite3_bind_parameter_index()も参照してください。

ObjectsConstantsFunctionsの一覧を参照してください。



参考文献

Binding Values To Prepared Statements

0 CommentsPosted in SQLite





SoundSport Pulse wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

SoundSport Pulse wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR