SQLite一些技巧总结Word下载.docx

上传人:b****6 文档编号:20700831 上传时间:2023-01-25 格式:DOCX 页数:22 大小:19.27KB
下载 相关 举报
SQLite一些技巧总结Word下载.docx_第1页
第1页 / 共22页
SQLite一些技巧总结Word下载.docx_第2页
第2页 / 共22页
SQLite一些技巧总结Word下载.docx_第3页
第3页 / 共22页
SQLite一些技巧总结Word下载.docx_第4页
第4页 / 共22页
SQLite一些技巧总结Word下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

SQLite一些技巧总结Word下载.docx

《SQLite一些技巧总结Word下载.docx》由会员分享,可在线阅读,更多相关《SQLite一些技巧总结Word下载.docx(22页珍藏版)》请在冰豆网上搜索。

SQLite一些技巧总结Word下载.docx

ret=sqlite3_get_table(db,"

selectcount(*)fromtable1wherefield=1"

&

dbresult,&

nrom,&

ncol,&

errmsg);

recordnum=atoi(dbresult[1]);

sqlite3_step后,如何知道查询返回的行数

sqlite3_prepare(db,"

select*fromlist;

-1,&

stat,0);

sqlite3_step(stat);

调用sqlite3_data_count(stat);

和sqlite3_column_count(stat);

返回的都是列数。

azResult是一个二级指针,它的值是有sqlite3_get_table()这个函数生成,我可以定义另外一个二级指针来保存这个值,不用的时候再调用sqlite3_free_table()来释放它。

SQLITE里查询日期与日期相减

selectdatetime('

2006-10-1700:

20:

00'

'

+1hour'

-12minute'

结果:

2006-10-1701:

08:

00

selectdate('

2006-10-17'

+1day'

+1year'

2007-10-18

创建了一个新表后,若没有数据,怎样得到表里的字段名啊?

你用

constchar*sqlite3_column_database_name(sqlite3_stmt*,int);

constvoid*sqlite3_column_database_name16(sqlite3_stmt*,int);

constchar*sqlite3_column_table_name(sqlite3_stmt*,int);

constvoid*sqlite3_column_table_name16(sqlite3_stmt*,int);

constchar*sqlite3_column_origin_name(sqlite3_stmt*,int);

constvoid*sqlite3_column_origin_name16(sqlite3_stmt*,int);

这个系列的函数就行,不然就从sqlite_master表中查一下

事务处理:

sqlite3_exec(db,"

BEGIN;

0,0,&

zErrMsg);

COMMIT;

intresult;

 

result=sqlite3_exec(db,"

begintransaction"

0,0,&

zErrorMsg);

//开始一个事务

committransaction"

//提交事务

rollbacktransaction"

//回滚事务

在SQLite中如果想处理时间的应该使用字段的默认值就可以了

CURRENT_TIMEwillgeneratethecurrentlocaltimeinANSI/ISOtimeformat

(HH:

MM:

SS).CURRENT_DATEwillgeneratethecurrentdate(inYYYY-MM-DDformat).CURRENT_TIMESTAMP

willproduceacombinationofthesetwo(inYYYY-MM-DDHH:

SSformat).Forexample:

CREATETABLEtimes(idint,

timeNOTNULLDEFAULTCURRENT_DATE

timeNOTNULLDEFAULTCURRENT_TIME,

timeNOTNULLDEFAULTCURRENT_TIMESTAMP);

INSERTINTOtimes

(1);

INSERTINTOtimes

(2);

SELECT*FROMStimes;

iddatetimetimestamp

------------------------------------------

12006-03-1523:

30:

252006-03-1523:

25

22006-03-1523:

402006-03-1523:

40

Thesedefaultscomeinquitehandyfortablesthatneedtologortimestampevents.

时间处理:

SELECT*FROMEIT_SCHEDULEWHERESERVICE_ID=?

ANDTS_ID=?

ANDON_ID

=?

ANDSTART_TIME_UTC_M=?

ANDSTART_TIME_UTC_L>

ORDERBYSTART_TIME_UTC_LLIMIT?

1

其中问号代表的值由sqlite3_bind_int()函数得到?

值传递是没有问题的。

就是结果变多了。

其中:

START_TIME_UTC_M表示的是当天日期

SQLiteDBMS

如果你有着方面的需求你可以去尝试一下SQLiteDBMS,它是一个韩国的开源项目,实现了C/S模式的SQLite支持。

具体特性如下:

TCP/IPServerdaemon

EmbeddedHTTPserver

HTTPrequest/XMLresponse

Preparedstatement

Multislavereplication

ManageExtendedSQL

Querycache

WebDAV

Monitoring

SecuritySSL

HTTPbaseauthentication

Tablelevelaccesscontrol

Library/Toolslibsqlited(C/C++)

SQLiteDBMSClient(GUI)

HTMLClient

datetime('

'

now'

)怎么显示当地时间?

呵呵!

我发现了:

localtime'

如何在VC下编译SQLITE

在projectsetting->

link

lib中加入sqlite3.lib

#include响应的头文件即可

Sqlite数据库学习例子,方便新人。

#include<

stddef.h>

stdlib.h>

stdio.h>

sqlite3.h>

staticint

callback(void*NotUsed,intargc,char**argv,char**azColName)

{

inti;

i<

argc;

i++){

if(argv[i]==NULL){

printf("

%s=NULL\n"

azColName[i]);

}else{

%s=%s\n"

azColName[i],argv[i]);

\n"

return(0);

int

main(intargc,char**argv)

sqlite3*db;

char*zErrMsg=0;

intrc;

if(argc!

=3){

fprintf(stderr,"

Usage:

%sDATABASESQL-STATEMENT\n"

argv[0]);

exit(EXIT_FAILURE);

rc=sqlite3_open(argv[1],&

db);

if(rc!

=SQLITE_OK){

Can'

topendatabase:

%s\n"

sqlite3_errmsg(db));

sqlite3_close(db);

rc=sqlite3_exec(db,argv[2],callback,0,&

SQLerror:

zErrMsg);

exit(EXIT_SUCCESS);

/*实用sqlite3_exec()的例子*/

string.h>

intrc,len,i,cols,type;

char*next;

sqlite3_stmt*st;

len=strlen(argv[2]);

rc=sqlite3_prepare(db,argv[2],len,&

st,&

next);

Erroronsqlite3_prepare:

for(;

;

){

rc=sqlite3_step(st);

if(rc==SQLITE_ROW){

cols=sqlite3_column_count(st);

cols;

type=sqlite3_column_type(st,i);

switch(type){

caseSQLITE_INTEGER:

%s[%d]=%d\n"

sqlite3_column_name(st,i),

i,sqlite3_column_int(st,i));

break;

caseSQLITE_FLOAT:

%s[%d]=%f\n"

i,sqlite3_column_double(st,i));

caseSQLITE_TEXT:

%s[%d]='

i,sqlite3_column_text(st,i));

caseSQLITE_BLOB:

%s[%d]=BLOB[%dbytes]\n"

sqlite3_column_name(st,i),

i,sqlite3_column_bytes(st,i));

caseSQLITE_NULL:

%s[%d]=NULL\n"

default:

UNDEFINEDColumn[%d]\n"

i);

}elseif(rc==SQLITE_DONE){

Erroronsqlite3_step:

rc=sqlite3_finalize(st);

Erroronsqlite3_finalize:

/*Anexampleusingwildcard&

bind*/

#defineBUF_LEN(1000)

#defineSQL_ST"

SELECT*FROMlistWHEREnameLIKE?

/*assumetheDBincludesatablenamed'

list'

consistsof'

name'

andetc.*/

char*next,buf[BUF_LEN];

=2){

%sDATABASE\n"

len=strlen(SQL_ST);

rc=sqlite3_prepare(db,SQL_ST,len,&

Pleaseinputnamepattern.\n"

if(fgets(buf,BUF_LEN,stdin)==NULL){

Somethingoccurredonstdin\n"

len=strlen(buf);

if(buf[len-1]=='

\n'

len--;

buf[len]='

\0'

rc=sqlite3_bind_text(st,1,buf,len,SQLITE_TRANSIENT);

Erroronsqlite3_bind_text:

/*InputdatafromCSVfile*/

/*Schema-CREATETABLElist(idINTEGERPRIMARYKEY,nameTEXT);

*/

/*CSV-``id,name'

#defineSQL_INSERT"

INSERTINTOlist(id,name)valueS(?

?

char*err_msg;

intid;

if(argc<

2){

%sdatabase\n"

rc=sqlite3_exec(db,"

BEGINTRANSACTION"

NULL,NULL,&

err_msg);

ErroronBEGINTRANSACTION:

err_msg);

len=strlen(SQL_INSERT);

rc=sqlite3_prepare(db,SQL_INSERT,len,&

sqlite3_errmsg(db)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1