您的位置:首页 > 博客中心 > 数据库 >

数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text,

时间:2022-03-10 18:18

               Sqlite3 的确很好用。小巧、速度快。最近研究它,有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。

              导入SQLLite library并引入头文件.

               libsqlite3.dylib本身是个链接,在这里它指向libsqlite3.0.dylib。也就是说在这里你添加libsqlite3.dylib和添加libsqlite3.0.dylib其实是添加了同一个文件,没有区别,那为什么要添加libsqlite3.0.dylib呢?原因在于libsqlite3.dylib是旧版的sqlite3动态库,也就是说如果出现了新的动态库(如:libsqlite3.1.dylib)那libsqlite3.dylib将指向这个新的动态库(libsqlite3.1.dylib)所以建议还是要添加libsqlite3.0.dylib。

   (1) 关键数据结构

sqlite 里最常用到的是 sqlite3 * 类型。从数据库打开开始,sqlite就要为这个类型准备好内存,直到数据库关闭,整个过程都需要用到这个类型。当数据库打开时开始,这个类型的变量就代表了你要操作的数据库。下面再详细介绍。

- (void)deleteButton { //打开数据库 sqlite3 * db = [DB open]; //执行删除 int falg = sqlite3_exec(db, "delete from BJS140523 where sName like '坐'", NULL, NULL, nil); NSLog(@"444444 falg = %d",falg); }


(二 ) sqlite3_prepare_v2:

原型:

SQLITE_API int sqlite3_prepare_v2(
  sqlite3 *db,            /* Database handle */
  const char *zSql,       /* SQL statement, UTF-8 encoded */
  int nByte,              /* Maximum length of zSql in bytes. */
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
<span style="font-family: 'Comic Sans MS';">   const char **pzTail     /* OUT: Pointer to unused portion of zSql */</span>

参考代码如下:

   int flag =sqlite3_prepare_v2(db, "select * from BJS140523 "  , -1, &stmt, nil);






(三) sqlite3_column_

原型:

SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol); SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol); SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol); SQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol); SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol); SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol); SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol); SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);


参考代码如下:

int sID = sqlite3_column_int(stmt, 0);//列的编号从0开始 const unsigned char * sName = sqlite3_column_text(stmt, 1); int sAge = sqlite3_column_int(stmt, 2); const unsigned char * sSex = sqlite3_column_text(stmt, 3);


(四)sqlite3_step()


原型:

SQLITE_API int sqlite3_step(sqlite3_stmt*);


参考代码如下:

if (falg == SQLITE_OK) {
        sqlite3_step(stmt);
    }


(五)sqlite3_finalize()

原型:

SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt);


参考代码如下:

sqlite3_finalize(stmt);


(六) sqlite3_bind_text



//bind  绑定 

原型:

SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
SQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
参考代码如下:

    int falg = sqlite3_prepare_v2(db, "update BJS140523 set sSex = ?,sAge = ? where sID = ?", -1, &stmt, nil);
    //绑定
    //问号是从 1 开始的
    
    sqlite3_bind_text(stmt,1,[sex UTF8String], -1, NULL);
    sqlite3_bind_int(stmt, 2, age);
    sqlite3_bind_int(stmt, 3, sID);












数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text,,布布扣,bubuko.com

热门排行

今日推荐

热门手游