sqlite常用文法詳細介紹

來源:互聯網
上載者:User

標籤:

1、SQL語句的先行編譯:將語句轉為資料流,執行語句前檢查語句的文法,但不能知道語句是否能查出結果。此方法有傳回值 

 先行編譯成功則返回SQLITE_OK----0否則返回SQLITE_ERROR----1
int sqlite3_prepare_v2(
  sqlite3 *db,                 //指向資料庫的指標
  const char *zSql,         //SQL語句
  int nByte,                   //SQL語句的長度 (一般用-1,系統可以自動算出字串得長度)
  sqlite3_stmt **ppStmt, //指向語句的指標
  const char **pzTail       //SQL中沒有用到的一部分,一般為空白
);  2、SQL語句的值綁定
*此類方法均有傳回值  先行編譯成功則返回SQLITE_OK----0否則返回SQLITE_ERROR----1
//對整數值的綁定
int sqlite3_bind_int(
sqlite3_stmt*,            //指向語句的指標
int,                      //預留位置的序號(從1開始以此類推)
int                       //綁定的值
); 
//對字串值的綁定
int sqlite3_bind_text(
sqlite3_stmt*,            //指向語句的指標
int,                      //預留位置的序號(從1開始以此類推)
const char*,              //要綁定的值(這裡要c類型的字串(CString),一般我們使用的是oc的字串(NSString*)要通過- (__strong const char *)UTF8String轉一下就可以了)
int n,                    //該字串的長度(一般用-1,系統可以自動算出字串得長度)
void(*)(void*)            //回呼函數(這裡博主還沒用過所以不是很瞭解以後會慢慢更新)
); 
//對位元據值的綁定 一般用於圖片的存取
int sqlite3_bind_blob(
sqlite3_stmt*,            //指向語句的指標
int,                      //預留位置的序號(從1開始以此類推)
const void*,              //要綁定的值(這裡要的是c類型的位元(Byte),一般我們使用的是oc的NSDATA(NsData*)要通過- (const void *)bytes轉一下就可以了)
int n,                    //資料的長度(用- (NSUInteger)length得到  這裡為什麼不用-1呢?因為-1對於算字串長度在行,其他的不一定準所以這裡我們手動算出資料的長度)
void(*)(void*)            //回呼函數(這裡博主還沒用過所以不是很瞭解以後會慢慢更新)
);  3、SQL語句的取值(從資料庫中對每一列取值)
//對整數欄位的取值
int sqlite3_column_int(
sqlite3_stmt*,            //指向語句的指標
int iCol                  //資料庫中表中列的序號(從0開始以此類推)
);
//對字串欄位的取值
*注意這裡我們取得是無符號的c字串我們要先轉為有符號C字串再轉為OC字串
例sname為oc字串
NSString *sname=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];

const unsigned char *sqlite3_column_text(
sqlite3_stmt*,            //指向語句的指標
int iCol                  //資料庫中表中列的序號(從0開始以此類推)
);
//對二進位欄位的取值
*注意這裡我們取得是c二進位我們要轉為oc二進位(我們要將byte(c)轉為nsdata(oc)通過+ (id)dataWithBytes:(const void *)bytes length:(NSUInteger)length;因為這裡需要資料的長度所以需要調用int sqlite3_column_bytes(sqlite3_stmt*, int iCol);擷取資料的長度)

int length=sqlite3_column_bytes(stmt,3);//擷取位元據的長度
NSData *img=[NSData dataWithBytes:sqlite3_column_blob(stmt, 3) length:length]; //將位元據轉換位NSData對象
 
const void *sqlite3_column_blob(
sqlite3_stmt*,            //指向語句的指標
int iCol                  //資料庫中表中列的序號(從0開始以此類推)
); 

sqlite常用文法詳細介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.