运用历程粗略地按以下尺寸脔割:

  • sqlite3_open()
  • sqlite3_prepare()
  • sqlite3_step()
  • sqlite3_column()
  • sqlite3_finalize()
  • sqlite3_close()

  这些历程是概念的的。,它决不完整是一体顺序开刀的历程。,如sqlite3_column()表现的是对查询到达党外面的履历的列的分离地开刀统称,竟,赌博游戏中心不在焉很的重大聚会。。

()

  此重大聚会用于翻开履历库。。在开刀履历库优于,率先,咱们召唤翻开履历库。。同样重大聚会翻开一体sqlite履历库文件的衔接而且汇成一体履历库衔接男朋友。同样开刀也称为P说话中肯最早恳求的赌博游戏重大聚会。,它亦等等赌博游戏。 API的替补队员。多的的sqlite交流重大聚会都召唤一体履历库衔接男朋友的拨弄作为它们的首要的体参量。

  重大聚会下定义:

int sqlite3_open(
  constchar *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: 赌博游戏 db handle */
);
int sqlite3_open16(
  constvoid *filename,   /* Database filename (UTF-16) */
  sqlite3 **ppDb          /* OUT: 赌博游戏 db handle */
);
int sqlite3_open_v2(
  constchar *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb,         /* OUT: 赌博游戏 db handle */int flags,              /* Flags */constchar *zVfs        /* Name of VFS module to use */
);

  阐明:

  归结为要翻开的履历文件不在。,将创办具有相同的名字的履历库文件。。归结为运用SqLIE33OPEN和SqLITE3OPENYV2,履历库将由UTF-8编码。,SqLITE3OPEN16采取UTF—16编码方式。。

  汇成值:

  归结为赌博游戏履历库成翻开(或创办),将汇成到SqLITeSK OK,若非,将汇成里面的指定遗传密码电文。。Sqlite3_errmsg()或许sqlite3_errmsg16可以用于到达履历库翻开里面的码的英文象征,这两个重大聚会下定义为:

constchar *sqlite3_errmsg(sqlite3*);
constvoid *sqlite3_errmsg16(sqlite3*);

  成翻开履历库或成翻开履历库, 被期望运用。 关门履历库衔接。   

  参量阐明:

  filename:召唤翻开的履历库文件的决定。,在sqlite3_open和sqlite3_open_v2中同样参量采取UTF-8编码,在SqLITE3A Open16中,运用UTF 16编码。。

  ppDb:履历库衔接句柄汇成到同样参量。,甚至有里面的。又的非正则是赌博游戏不克不及分派内存来蓄电赌博游戏男朋友。,PpDb将汇成空值。。

  flags:作为履历库衔接的附加把持参量,它可以是SqtLeYOPENION只读。、SQLITE_OPEN_READWRITE和SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE说话中肯一体,把持履历库吐艳的方式,是的,是SqLITEYOPENMONUTEX。、SQLITE_OPEN_FULLMUTEX、 SQLITE_OPEN_SHAREDCACHE随着SQLITE_OPEN_PRIVATECACHE化合运用,细情的各种细节可以证明人。。

()

  此重大聚会将SQL原文掉换为准备表现(准备好)。 表现)男朋友,同时汇成点同样男朋友的拨弄。。同样交流召唤一体履历库衔接拨弄和一体包含原文的原文。。它有效地不处死(评价)SQL表现。,它可是为处死SQL表现做准备。。

  重大聚会下定义(仅列出UTF-8)

int sqlite3_prepare(
  sqlite3 *db,            /* Database handle *//* 履历库句柄成翻开 */constchar *zSql,       /* SQL statement, UTF-8 encoded *//* UTF8编码的 SQL 表现 */int nByte,              /* Maximum length of zSql in 八位位组。 *//* 参量 sql 的八位位组数, 包含 ''\0'' */
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle *//* 出口:预波湾阴谋表现句柄 */constchar **pzTail     /* OUT: Pointer to unused portion of zSql *//* 出口:点 sql 表现的未用使成比例 */
);
int sqlite3_prepare_v2(
  sqlite3 *db,            /* Database handle */constchar *zSql,       /* SQL statement, UTF-8 encoded */int nByte,              /* Maximum length of zSql in 八位位组。 */
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */constchar **pzTail     /* OUT: Pointer to unused portion of zSql */
);

  参量阐明:

  db:履历库拨弄。

  zSql:sql表现,运用UTF-8编码。

  nByte:归结为NBEL以内0,重大聚会从开端到首要的体0音栓符承受情节。;归结为nByb变动从而发生断层正数,此后,同样重大聚会可以从ZSQL读取的最大八位位组数。;归结为nByb变动从而发生断层正数,ZSQL在最早加起来/000或U000时音栓。。归结为用户意识到传入的SQL表现是 ”\0” 期末考试的事物的,嗯,没有活力的较好的的大大地。:将NBULL的值设置为字母串的按浆糊排列(包含0),很可以克制不要赌博游戏抄写该字母串的一份拷贝,增多顺序功效。

  pzTail:提到ZSQL在加起来音栓符或nByter晚年的完毕。,归结为ZSQL有等等的,因而这些残渣的情节被蓄电在pZ尾t中。,摈除期末考试部分符。归结为PSZT尾变动从而发生断层空的, PSZ牛臀肉点SQL中首要的体传入SQL表现的期末考试的事物。。此重大聚会仅波湾阴谋SQL的首要的体表现。, 比如,*PSZ尾注点的情节心不在焉波湾阴谋。。

  ppStmt:可以运用SqLITE3-尺寸处死的波湾阴谋表现拨弄,归结为呈现里面的,它被设置为空。,归结为输出原文不包含SQL表现。恳求历程葡萄汁一本正经在波湾阴谋好的sql表现成功运用后运用sqlite3_finalize()剔除它。

  阐明:

  归结为成处死,此后汇成到SqLyeSek OK,若非,汇成一体里面的指定遗传密码电文。。提议运用SqLeTe3PiaRaysV2重大聚会。,SqLITE3L准备只用于前向互换性。。

  凡例:

  <1>准备预告(准备) 表现)男朋友

typedef struct sqlite3_stmt sqlite3_stmt;        

  一体准备预告(准备) 表现)男朋友代表一体简略SQL表现男朋友的例,同样男朋友通常高气压“准备表现”或许“波湾阴谋好的SQL表现”或许就指导称为“表现”。

      句子男朋友的生活周期阅历了很一体历程。:

    1. 运用SqLeTe3ApPiaRaysV2或互相牵连重大聚会来创办同样男朋友。
    2. 运用SqLeTe3BiNd**()想要主发动机参量(主发动机) 参量)化合值
    3. 经过恳求SQLITE3X尺寸一次或屡次处死此SQL。
    4. 运用SqLeTe3-Read()重行安放或安置该表现。,此后回到秒步。,同样历程是0次或屡次。
    5. 用SqLITE3O期末考试部分同样男朋友

  赌博游戏说话中肯SQLITE3Y-STMT的建筑风格心不在焉下定义。,这可是一种茫然的的典型。,在运用中,它通常用拨弄开刀。,而sqlite3_stmt典型的拨弄在有效地是一体点Vdbe的建筑风格体得拨弄。

  <2>主发动机参量(主发动机) 参量)

  在传给sqlite3_prepare_v2()的sql的表现原文或许它的变量中,完成以下模板的原文将被PARAMET掉换:

|  ?
|  ?NNN//NNN代表数字。
|  VVV/VVV代表印
|  @VVV
|  $VVV

  在上面的这些模板中,NNN代表一体数字。,VVV代表一体字母数字跺脚符(比如:222表现名字为222的跺脚符),SQL表现说话中肯参量(变量)由上面的T指定的,比如,选择 ? from ? 此表现指定的两个参量。,赌博游戏表现中首要的体参量的变址值为1。,这要紧同样表现说话中肯两个参量的变址是1和2。,运用?将自动的变址。,运用NNN可以指定的参量自己的变址值。,这使知晓该参量的幂数的值是NNN。。VVV表现一体名为VVV的参量。,它也有一体变址值。,自动的分派。

  比如:

INSERT INTO people (身份证, 姓名) VALUES ( ?, ? );
INSERT INTO people (身份证, id2,姓名) VALUES ( ?1, ?1.?2 );  //功用:可以用相同的的值绑定多个变量。
INSERT INTO people (身份证, 姓名) VALUES ( :id, :name );
INSERT INTO people (身份证, 姓名) VALUES ( @id, @name );
INSERT INTO people (身份证, 姓名) VALUES ( $id, $name );  //用于遭受TCL变量的散布说法,除非运用TCL设计。,若非,提议运用。”版本

  可以运用SqLeTe3BiNd**()将值绑定到这些参量。。

3.int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n,间隔(*)(间隔)

  参量阐明:

  秒个参量:序列号(从1开端)

  第三参量:为字母串值

  四个参量:为字母串按浆糊排列

  第五参量:为一体重大聚会拨弄,在处死该开刀后,SqLITE3汇成此重大聚会。,通常用于使摆脱字母串服务的内存。。同样参量有两个不断的。,SQLITE_STATIC通知sqlite3_bind_text重大聚会字母串为不断的,你可以保险箱地运用它。;而SQLITE_TRANSIENT会使得sqlite3_bind_text重大聚会对字母串做一份拷贝。这两个常数参量通常用于调准SqLITe3BbdIn原文。。表现已准备好。,即,处死开刀。。

  有多的SqLeTe3- BiNd**摆放餐具重大聚会。:

int sqlite3_bind_blob(sqlite3_stmt*, int, constvoid*, int n, void(*)(void*));  //重大聚会:为查询建筑风格绑定履历。

参量阐明:

PARAM1(IN):查询建筑风格体。
PARAM2(IN):绑定第两三个履历(sql表现说话中肯第两三个讯问(?))。
PARAM3(IN):二元系履历拨弄。
PARAM4(IN):二元系履历按浆糊排列。
PARAM5(IN):析构回调重大聚会,通常设置为空,完毕后使摆脱你自己。

汇成值:

SQLITE_OK 成。

阐明:

绑定重大聚会葡萄汁定位SqLITE3-步的后面。,恳求SqLITE3Y准备或SqLITE3A重排。

未绑定参量默许为NULL。,类推的绑定重大聚会也有以下情节:

int sqlite3_bind_double(sqlite3_stmt*, int, double);
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite_int64);
int sqlite3_bind_null(sqlite3_stmt*, int);
int sqlite3_bind_text(sqlite3_stmt*, int, constchar*, int n, void(*)(void*));
int sqlite3_bind_text16(sqlite3_stmt*, int, constvoid*, int, void(*)(void*));
int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*); 

4.  sqlite3_step()

  此历程用于处死先前的SqLITE3的准备表现。。此表现处死到RE的第党的便于使用的态度。。举行到归结为的秒行。,只需恳求SqLITE3SOSEP。。持续恳求SqLITE3SOSEP()直到表现成功。,不汇成归结为的表现,如:INSERT、UPDATE或DELETE),SqLeTe3a尺寸()只汇成一次处死。。

  重大聚会下定义:

int sqlite3_step(sqlite3_stmt*);

  汇成值:

  重大聚会的汇成值鉴于用于创办S的重大聚会。,准许是运用老版本的交流sqlite3_prepare()和sqlite3_prepare16(),汇成值将是SqLyeTyLoad。、SQLITE_DONE、SQLITE_ROW、SQLITE_ERROR或 SQLITE_MISUSE,而v2版本的交流sqlite3_prepare_v2()和sqlite3_prepare16_v2()则会同时汇成这些归结为码和散布归结为码。

  到某种条款全部和全部先前的版本,召唤在sqlite3_step()晚年的恳求sqlite3_reset(),在随后的SqLITE3中 步前。归结为恳求SqLITE3A RESET,则RESET表现破产。,将理由SqLITE3 尺寸汇成到SqLITEY乱用,但在V3中。 6.23.1后来,SqLeTe3a步()将自动的恳求SqLITE3A重排。。

  阐明:
当表现由SqLITE3IO准备()或其互相牵连重大聚会预波湾阴谋时,葡萄汁恳求一次或屡次恳求SqLeTe3Apple(尺寸)来评价预波湾阴谋的STAT。。
该重大聚会的细情行动依赖于由sqlite3_prepare()(或其互相牵连的重大聚会)发生的是一转方式的预波湾阴谋表现。

  重大聚会将汇成一体以下的归结为来特征其处死归结为:
     SQLITE_BUSY:忙吧。 履历库引擎无法锁定履历以成功其任务。 又你可以尝试很屡次。
     SQLITE_DONE:成功。 sql 该预告已成处死。 在恳求 sqlite_reset() 优于, 今天的预波湾阴谋表现不被期望是 sqlite3_step() 再打电话机。
     SQLITE_ROW:查询归结为。 此刻,您可以经过互相牵连的履历作客功用(列) access 重大聚会)获取履历。 sqlite3_step() 另一体恳求将获得下一体查询归结为。
     SQLITE_ERROR:出了成绩。 这次你可以经过。 sqlite3_errmmsg() 获取互相牵连的里面的通信。 sqlite3_step() 不克不及被再打电话机。
     SQLITE_MISUSE:里面的的库运用。 同样重大聚会心不在焉被完完全全地运用。

5.int sqlite3_reset(sqlite3_stmt *pStmt)

  SqtLe33Read用于将准备表现男朋友重行安放或安置为其起始值。,此后准备重行处死。。全部SQL表现变量都运用SQLITE3XBIN *绑定值。,运用SqLeTe3Access绑定来重行安放或安置这些绑定。SqLITE3A重排交流将准备表现重行安放或安置为开端。SqLIE33Read不更改准备表现说话中肯无论哪一个绑定值。,猜猜看。,表现的处死能够有等等换衣服。,此后将表现的条款重行安放或安置为绑定值。。

  汇成值:

  它的酬报意义对立关系上地特别。。汇成到SqtLeItHOLL表现暂时无法处死开刀。,SqtLeIsEDO表现开刀已成功。,SqtLeIsLROW训示处死成功并汇成(处死)。。当汇成值为,咱们召唤处置查询归结为。,SQLITE3想要SqLeTe3-柱列*摆放餐具重大聚会

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); 

  参量:

  ICOL是列的序列号。,从0开端。

  汇成值:

  归结为有多行汇成,您可以再次恳求SqLeTe3-步重大聚会。,此后经过SqLITE3-柱重大聚会*获得汇成值。。

6.  sqlite3_column() 

  同样历程从处死sqlite3_step()处死一体准备表现获得的归结为集的今天行中汇成一体列。在每个SqLeTe3x尺寸获得归结为集晚年的,列中止。,可以屡次恳求此历程来查询列的值。。列开刀有多个功用。,全部前缀都是鉴于SqLITE3A列的。: 

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

  阐明: 

  首要的体参量是从SqLITE3X准备汇成的准备。 点表现男朋友的拨弄,秒个参量指定的意图为B的列的变址。。最左边的列的变址号是0。,行数可以经过运用SqLeTe3- Cull计数获得。。 

  这些历程将按照使习惯于塑造履历典型。,sqlite内里运用sqlite3_snprintf()去自动的举行同样掉换,以下是四处走动的掉换的各种细节

内里典型

请典型

掉换

NULL

INTEGER

归结为是0

NULL

FLOAT

归结为是0

NULL

TEXT

归结为是空的。

NULL

BLOB

归结为是空的。

INTEGER

FLOAT

从使合身到浮点小数点型

INTEGER

TEXT

整形外科ASCII码显示

INTEGER

BLOB

同上

FLOAT

INTEGER

浮点小数点掉换使合身

FLOAT

TEXT

浮点小数点ASCII显示

FLOAT

BLOB

同上

TEXT

INTEGER

运用atoi()

TEXT

FLOAT

运用ATOF

TEXT

BLOB

心不在焉掉换

BLOB

INTEGER

首要的到原文,此后运用ATOI。

BLOB

FLOAT

首要的到原文,此后运用ATOF。

BLOB

TEXT

召唤时添加0个期末考试部分符。

凡例:

   BLUB履历典型是指二元系履历块。,比如,您召唤在履历库中蓄电图片。,这张图片将以二元系身材蓄电。,赌博游戏说话中肯类似履历典型是BLUB。。

int sqlite3_column_bytes(sqlite3_stmt*, int iCol)
int sqlite3_column_bytes16(sqlite3_stmt*, int iCol)

  前述的两个重大聚会汇成对应的CULU的八位位组数。,此八位位组数不包含在后者典型中添加的0个期末考试部分符。。

  以下是一点点最保险箱和最简略的运用谋略。: 

  • 先sqlite3_column_text() ,此后 sqlite3_column_bytes()
  • 先sqlite3_column_blob(),此后sqlite3_column_bytes()
  • 先sqlite3_column_text16(),此后sqlite3_column_bytes16()

(1)从履历行说话中肯列获取履历。:


sqlite3_column_xxx(sqlite3_stmt*, int iCol); 

     在SqLITE3-尺寸汇成到SqLyeSeLay.,运用它获取列ICOL说话中肯履历。。

     代表:
blob:保养履历蓄电器拨弄
bytes, bytes16: 获取BLB典型履历的浆糊。,或许字母串按浆糊排列掉换为UTF8/UTF16。。
double, int, int64: 数值
text,text16:字母串拨弄
type:此列的履历典型(SqtLeIt整体),SQLITE_FLOAT,SQLITE_TEXT,SQLITE_BLOB,SQLITE_NULL)

     凡例:
归结为列运用不一样的履历读取方式,则符合的,到达的值将掉换归结为。。

  (2)从履历行说话中肯列获取履历。的典型:

int sqlite3_column_type(sqlite3_stmt*, int iCol);

     汇成值:
SQLITE_INTEGER、SQLITE_FLOAT、SQLITE_TEXT、SQLITE_BLOB、SQLITE_NULL。

     凡例:
所运用的方式类推于SqLeTe3O-Culnnxxxx()重大聚会。。

  (3)获得的柱数:

int sqlite3_column_count(sqlite3_stmt *pStmt);   

     汇成值:
归结为前进心不在焉汇成值,如修复,将汇成0。

  (4)获取列名 

constchar *sqlite3_column_name(sqlite3_stmt*,int);

  (5)汇成列履历典型

constchar *sqlite3_column_decltype(sqlite3_stmt *, int i);

  (6)获取今天行中包含的履历等于。


int sqlite3_data_count(sqlite3_stmt *pStmt);
  汇成值:
  归结为SqLITE3OY尺寸汇成到SqtLeLeLayRun,可以到达列数。,若非它将是零。。 

7.int sqlite3_reset(sqlite3_stmt *pStmt)

  功用:

  重行安放或安置全部绑定值,回到条款后,只需恳求SqLITE3X准备。。

8.int sqlite3_finalize(sqlite3_stmt *pStmt)

  同样历程毁灭了赌博游戏创办的准备表现。,每个准备表现葡萄汁运用此重大聚会来销毁以预先阻止。

  在空拨弄上恳求此重大聚会心不在焉无论哪一个使发生。,同时,你可以在生活周期的无论哪一个时分准备同样功用。:在处死表现优于,在一次或屡次恳求SqLyeTyRead晚年的,或在恳求SqLeTe3x尺寸晚年的,可是表现能否为Co。

  示例:

sqlite3_finalize(pStmt);
pStmt = NULL;

  此历程关门先前由SqLITE3OPE翻开的履历库衔接。,与此衔接互相牵连的无论哪一个准备表现葡萄汁被使摆脱。。

  重大聚会下定义:

int sqlite3_close(
    sqlite3* pDB    /* 由 sqlite3_open 或许基互相牵连重大聚会翻开。 赌博游戏 男朋友句柄 */
);

  阐明:
此重大聚会用于销毁SqLITE3男朋友。。汇成SqLeLeSK OK表现男朋友已成销毁。,全部互相牵连资源均获成回收。。
应用顺序葡萄汁在关门优于”成功(finalize)”全部的”预波湾阴谋表现(prepared 预告),并关门全部二元系句柄绑定(BLB) 句柄),归结为依然在未成功的预波湾阴谋表现或二元系句柄,此后重大聚会汇成SqLyeTyLoad(5)。。
示例:

if(PDB) != 空)
{
    sqlite3_close(PDB));
    pDB = NULL;
} 

  重大聚会下定义:

int sqlite3_exec(
    sqlite3* pDB,       /* sqlite3句柄 */constchar* sql,    /* 被处死的 SQL 表现 */int 回调)void*,int,char**,char**),  /* 处死/查询回调重大聚会 */void* pvoid,    /* 前进给回调重大聚会的首要的体参量。 */char**errmsg    /* 里面的出口通信 */
);

  阐明:
此重大聚会用于处死多个SQL表现。。
该重大聚会封装了先前版本的SqLITE3X准备。、sqlte3_step()和sqlite3_finalize()重大聚会,很,用户可以处死简略的指定遗传密码电文来处死多个SQL表现。。
SQLITE3AXEXEC()交流处死多个SQL表现,这些表现由。归结为回调重大聚会变动从而发生断层空的,它恳求每党查询归结为的回调重大聚会。。归结为心不在焉指定的回调重大聚会,SqLeTe3AxExc()简略地疏忽查询归结为。。
当处死SQL表现时出错,处死将会坐下。,上面的表现都被疏忽了。。归结为ErrMSG参量变动从而发生断层空的,无论哪一个里面的通信将会被写进由sqlite3_malloc()获得的的存储空间中,ErrMsg点的内存。。克制不要内存走漏,应用顺序被期望在不召唤该里面的通信后同时恳求sqlite3_free()使摆脱该存储空间。归结为ErrMSG参量不为空,心不在焉错。,Errmsg设置为空。。
归结为回调重大聚会汇成非零,SqLeTe3AxExc()同时灯火管制查询。,不再下列SQL 表现,不再恳求回调重大聚会。,SqLeTe3AxExc()将汇成到SqLITEY-AUBT以完毕处死。。
示例:

sqlite3_exec(PDB), to_utf8("delete from tablename where id=123;"), NULL, NULL, 空);
sqlite3_exec(PDB), to_utf8("create table if not exists tablename (身份证 integer primary key,name 课文)"), NULL, NULL, 空);
sqlite3_exec(PDB), to_utf8("insert into tablename (姓名) values (女郎不哭)"), NULL, NULL, 空);
if(sqlite3_exec(PDB), to_utf8("select * from tablename;"), sqlite_callback, NULL, &pszErrMsg) != SQLITE_OK)
{
  ...
  sqlite3_free(pszErrMsg);
  pszErrMsg = NULL;
}

  重大聚会下定义:

int sqlite3_errcode(
    sqlite3* pDB    /* 赌博游戏3 履历库句柄 */
);  

   阐明:
同样重大聚会汇成期末考试一体恳求。 sqlite3_ 在API发展的里面的指定遗传密码电文。

   示例:

int errcode = sqlite3_errcode(PDB));

  重大聚会下定义:

constchar *sqlite3_errmsg(
    sqlite3* pDB    /* 赌博游戏3 履历库句柄 */
);

  阐明:
此重大聚会汇成与PDB履历库POI互相牵连联的里面的音讯。, 由英语填写。
用户不用思索内存的使摆脱。,其由赌博游戏内里管理, 下次恳求重大聚会时,它也会叠印盖。。

  示例:

printf("%s\n", sqlite3_errmsg(PDB)));

  重大聚会下定义:

int sqlite3_key(
  sqlite3 *db,                   /* Database to be 重行进去 */constvoid *pKey, int nKey     /* The key */
);

  功用:

  指定的编密码电文履历库的密码电文,该重大聚会在SqLeTe3x翻开晚年的恳求。。

  重大聚会下定义:

int sqlite3_rekey(
  sqlite3 *db,                   /* Database to be 重行进去 */constvoid *pKey, int nKey     /* The new key */
);

  功用:

  重行安放或安置履历库密码电文,归结为是钥匙 = 0或NKEY = 0,此履历库未编密码电文。。

  重大聚会下定义:

int sqlite3_get_table(
  sqlite3*,              /* An open database */constchar *sql,       /* SQL to be executed */char ***resultp,       /* Result written to a char *[]  that this points to */int *nrow,             /* Number of result rows written here */int *ncolumn,          /* Number of result columns written here */char **errmsg          /* Error msg written here */
);

  功用:

查询表。

参量阐明

PARAM1(IN):履历库句柄
PARAM2(IN):sql表现,以0期末考试的事物
PARAM3(OUT):查询归结为
PARAM4(OUT):汇成行数(很履历)
PARAM5(OUT):汇成列数(多个音节)
PARAM6(OUT):汇成里面的音讯

汇成值:

  SQLITE_OK 成。

  重大聚会下定义:

void sqlite3_free_table(char 归结为)

  功用:

  经过SqLITE3GETGETHART查询保养使摆脱归结为履历。

  参量阐明:
PARAM1(IN):要使摆脱的履历拨弄

  重大聚会下定义:

int sqlite3_create_function(
  sqlite3 *,
  constchar *zFunctionName,
  int 纳格,
  int eTextRep,
  void*,
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
  void (*xFinal)(sqlite3_context*)
);

  功用:

  此功用用于完全符合/剔除用户下定义的重大聚会。。

18。等等

constchar *sqlite3_libversion(void);
int sqlite3_libversion_number(void);          //重大聚会:获取版本号
sqlite_int64 sqlite3_last_insert_rowid(sqlite3*);    //重大聚会:获取期末考试一体插入行副标志。int sqlite3_changes(sqlite3*);               //重大聚会:获取亲密的为SqLITE3AXEXEC处死的行数int sqlite3_total_changes(sqlite3*);            //重大聚会:获取履历库翻开后已更改的重大聚会。void sqlite3_interrupt(sqlite3*);             //功用:灯火管制或中止履历库的今天开刀。int sqlite3_complete(constchar *sql);          //重大聚会:判别句子能否以分号期末考试的事物。int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);    //功用:在查询忙碌时设置回调和置。阐明:默许回调重大聚会为空。,归结为回调重大聚会为空,表锁定后sqlite3_exec()处死会指导汇成SQLITE_BUSYint sqlite3_busy_timeout(sqlite3*, int MS)       //功用:设置查询使超过时期时期(手写本)char *sqlite3_mprintf(constchar*,...);
char *sqlite3_vmprintf(constchar*, va_list);
char *sqlite3_snprintf(int,char*,constchar*, ...); //重大聚会:电视节目的总安排印,咱们召唤用%q掉换(%s)(首要是运用分号)void *sqlite3_malloc(int);
void *sqlite3_realloc(void*, int);
void sqlite3_free(void*);                //功用:内存功用int sqlite3_set_authorizer(
  sqlite3*,
  int XAUTH)void*,int,constchar*,constchar*,constchar*,constchar*),
  void *pUserData
);
//功用:设置履历库相信void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,constchar*), void*); void *sqlite3_profile(sqlite3*, void(*xProfile)(void*,constchar*,sqlite_uint64), void*); void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*); //重大聚会:设置处死回调重大聚会。,sqlite3_exec(),sqlite3_step() ,当恳求SqLITE3GETGETABLE()时void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);      //重大聚会:设置事务回调重大聚会int sqlite3_errcode(sqlite3 *db); constchar *sqlite3_errmsg(sqlite3*); //重大聚会:获取里面的指定遗传密码电文和里面的音讯。int sqlite3_bind_parameter_count(sqlite3_stmt*);            //重大聚会:汇成召唤绑定的参量总计(数字)constchar *sqlite3_bind_parameter_name(sqlite3_stmt*, int);     //重大聚会:获取绑定参量的名字。,参量汇成空值int sqlite3_bind_parameter_index(sqlite3_stmt*, constchar *zName); //重大聚会:获取绑定参量变址int sqlite3_clear_bindings(sqlite3_stmt*);               //功用:剔除绑定参量

证明人指定遗传密码电文:

#include 
#include ""int main(){
    sqlite3 *db;
    char *zErrMsg = NULL;
    int rv;
    char szSql[128] = { 0 };
    sqlite3_stmt *stmt;
    rv = sqlite3_open("", &db);
    if(右)
        fprintf(stderr, "Can''t open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return1;
    }
    else
       fprintf(stderr,"sqlite3_open OK\n");
       //在这一点上查询,准许履历库中有一体表勘探。,一列是COL1(原文典型)
       strcpy(szSql,"SELECT COL1 FROM test where COL1"); 
       rv = sqlite3_prepare(db, szSql, 128, &stmt, 空);
       if( rv != SQLITE_OK ) {
         fprintf(stderr, "sqlite3_prepare(%d): %s\n", rv, sqlite3_errmsg(db));
         return -1;
       }    
       rv = sqlite3_bind_text(stmt, 1, "VALUE1", strlen("VALUE1"), SQLITE_STATIC);
       if( rv != SQLITE_OK ) {
         fprintf(stderr, "sqlite3_bind_text(%d): %s\n", rv, sqlite3_errmsg(db));
         return -1;
       }
       rv = sqlite3_step(stmt);
       if( (右心室 != SQLITE_OK) && (右心室 != SQLITE_DONE) && (右心室 != SQLITE_ROW) ) {
         fprintf(stderr, "sqlite3_step(%d): %s\n", rv, sqlite3_errmsg(db));
         return -1;
       }
       while( rv == SQLITE_ROW ){
          fprintf(stderr, "result: %s\n", sqlite3_column_text(stmt,0));
          rv = sqlite3_step(stmt);
       }
       rv = sqlite3_finalize(stmt);
       if( rv != SQLITE_OK ) {
         fprintf(stderr, "sqlite3_finalize(%d): %s\n", rv, sqlite3_errmsg(db));
         return -1;
       }
       sqlite3_close(db);
       return0;
}
/****************************************************************************/
#include ""
#include ""staticint callback( void*NotUsed,int argc, char **argv, char **azColName)
{
     int i;
     for (i=0; i){
        printf ( "%s = %s/n", azColName[i], argv[i] ? argv[i] :"NULL" );
     }
     printf ( "/n" );
     return0;
}
#define CHECK_RC(rc,szInfo,szErrMsg,db) 归结为(RC)!=SQLITE_OK) /
            { printf ( "%s error!/n" ,szInfo);/
            printf ( "%s/n",szErrMsg);    /
            sqlite3_free(szErrMsg);         /
            sqlite3_close(db);              /
            return0;}
int _tmain( int argc, _TCHAR* argv[])
{
     sqlite3 *db;
     char *dbPath= "f:/";
     char *szErrMsg = 0;
  
     int rc= sqlite3_open(dbPath, &db);
     CHECK_RC(rc, "open database" ,db);
     char *szSql= "create table UserInfo(身份证) int primary key , UserName char, PassWord 印)";
     rc=sqlite3_exec(db,szSql,0,0,&szErrMsg);
     CHECK_RC(rc, "create table" ,szErrMsg,db);
     rc=sqlite3_exec(db, "insert into UserInfo(身份证),UserName,密码电文) 意义(1),''kfqcome'',''123456'')",0,0,&szErrMsg);
     CHECK_RC(rc, "insert info" ,szErrMsg,db);
     rc=sqlite3_exec(db, "insert into UserInfo(身份证),UserName,密码电文) 意义(2),小姐 王,''654321'')",0,0,&szErrMsg);
     CHECK_RC(rc, "insert info" ,szErrMsg,db);
     szSql= "select * from UserInfo" ;
     rc = sqlite3_exec(db,szSql, callback, 0, &szErrMsg);
     CHECK_RC(rc, "query values" ,szErrMsg,db);
     sqlite3_close(db);
     getchar ();
     return0;
}

出口归结为

ID = 1
UserName = kfqcome
PassWord = 123456

ID = 2
UserName = miss wang
PassWord = 654321

 顺序示例

CREATE TABLE sqlite_master (
  type TEXT,
  name TEXT,
  tbl_name TEXT,
  rootpage INTEGER,
  sql TEXT
);

//在赌博游戏履历库中获取表名和音节名。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, 是的)  
NSString *documentsDirectory = [条理] objectAtIndex:0];  
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"database_name"];  
      
sqlite3 *database;  
sqlite3_open([path UTF8String], &履历库)  
      
charchar *errorMsg;  
const charchar *createSQL = "CREATE TABLE IF NOT EXISTS PEOPLE (身份证 INTEGER PRIMARY KEY AUTOINCREMENT, FIELD_DATA 课文)";  
int result = sqlite3_exec(database, createSQL, NULL, NULL, &errorMsg);  
      
sqlite3_stmt *statement;  
if (归结为 == SQLITE_OK) {  
  const charchar *getTableInfo = "select * from sqlite_master where type=''table'' order by name;";  
  result = sqlite3_prepare_v2(database, getTableInfo, -1, &statement, 零)  
  while (sqlite3_step(statement) == SQLITE_ROW) {  
    charchar *nameData = (charchar *)sqlite3_column_text(statement, 1);  
    NSString *tableName = [[NSString 异类] initWithUTF8String:nameData];  
    NSLog(@"name:%@",表名)  
  }  
          
  const charchar *getColumn = "PRAGMA table_info(PEOPLE)";  
  result = sqlite3_prepare_v2(database, getColumn, -1, &statement, 零)  
  while (sqlite3_step(statement) == SQLITE_ROW) {  
    charchar *nameData = (charchar *)sqlite3_column_text(statement, 1);  
    NSString *columnName = [[NSString 异类] initWithUTF8String:nameData];  
    NSLog(@"columnName:%@",列名)  
  }  
          
  sqlite3_finalize(statement);  
}  
sqlite3_close(履历库)  

Published by sayhello

发表评论

电子邮件地址不会被公开。 必填项已用*标注