SQLite学习

sqllte3有五种基本类型,sqlite3会把其他数据类型转换成以下5类基本数据类型。

1.null,blob?转化为NULL类型。

2.integer类型转换为INTEGER类型。

3.real?double和float类型转换为REAL类型。

4.char,clob?test和varchar类型转换为TEXTl类型。

5.其余数据类型都转换为NUMERIC类型。

实例:

新建一个数据库:sqlite3 test.db

如果数据库test.db已经存在,则命令就会在当前目录下打开test.db,如果不存在,则创建。事实上,SQLite3并不会马上创建test.db,而是在等第一个表创建完成后才在物理上创建数据库。

创建一个表:create table test_table(name,sex,age);

由于SQLIte3能根据插入数据的实际类型动态改变列的类型,所以在create语句中并不要求给出列的类型。

创建索引:create index test_index on test_table(name);

操作数据:

插入:insert into test_table values('xiaoming','male',2);

更新:update test_table set age='19' where name = 'xiaoming‘;

删除:delete from test_table where name = 'xiaoming';

批量操作数据库:

sqlite>begin;         //批量开始

sqlite>insert into test_table values ('xiaoming','male','18');

sqlite>insert into test_table values ('xiaopeng','male','18');

sqlite>commit;      //批量结束

结束后才会把数据插入数据库。

数据库的导入导出

导出:sqlite3 test.db ".dump“>test.sql;

rm test.db;

导入:

sqlite3 test.db<test.sql;

 

SQLite编程接口:

数据库的打开:sqlite_open

int sqlite3_open(const char* dbname,sqlite3 **db)

dbname:数据库名称,db表示数据库的句柄;

返回值:0成功,1表示失败。

数据库的关闭;sqlite_colse

int sqlite_close(sqlite3 *db)

实例:

#include <stdio>

#incldue <sqlite3.h>

static sqlite3 *db =null;

int main()

{

int rc;

rc=sqlitee_open("test.db",&db);

if(rc)

{

   printf("open error\n");

}

else

{

   printf("open succese\n");

}

sqlite3_colse(db);

return 0;

}

gcc -o test test.c -l sqlite3

 

数据库的语句执行:

int sqlite3_exec(sqlite3 *db,const char *sql,int (*callback)(void*,int,char**,char **),void *,char **errmsg);

//db表示数据库,sql表示执行语句,callback表示回滚,errmsg表示错误信息。

回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型。

实例:

rc =sqlite3_open("test.db",&db);

rc=sqlite3_exec(db,"insert into test_table values('daobao','male',24)",0,0,&errmsg);

 

数据库查询语句:

sqlite3_get_table函数:

int sqlite3_get_table(sqlite* db,const char *zSql,char ***pazResult,int *pnRow, int * pnColumn,char **pzErrmsg);

//db表示数据库,zSql表示SQL语句,pazResult,表示查询结构集,pnRow表示结果集的行数,pnColunm表示结果集的列数,errmsg表示错误信息。

sqlite3_free_table函数:

void sqlite3_free_table(char **result);

实例:

#include<stdio.h>

#include<sqlite3.h>

static sqlite3 *db =null;

static char** result =null;

statci char *errmsg =null;

int main()

{

  int rc,i ,j;

int nrow;

int ncolumn;

rc=sqlite3_open("test.db",&db);

rc=sqlite3_get_table(db,"select * from test_table",&result,&nrow,&ncolumn,&errmsg);

if(rc)

{

    printf("query fail!");

}

else

{

   printf("query success!\n");

   for(i =0;1<=nrow;i++)

  {

          for(j=0;j<ncolumn;j++)

          {

                   printf("%s|",Result[i*ncolumn+j]");

            }

            printf("\n");

   }

}

sqlite3_free_table(Result);

sqlte3_close(db);

return 0

}

sqlite3_prepare:把SQL语句编译成字节码,由后面的执行函数(sqlite3_step)函数执行。

int sqlite3_prepare(sqlite3* db,const char *zSql,int nByte,sqlite3_stmt,const char **pTail);

db:数据库指针

zSql:sql语句

nByte:如果nByte小于0,则函数取出zSql中从开始到第一个0终止符的内容;如果nByte不是负的,那么它就是这个函数能从zSql中读取的字节数的最大值。如果nBytes非负,zSql在第一次遇见’/000/或’u000’的时候终止

pzTail:上面提到zSql在遇见终止符或者是达到设定的nByte之后结束,假如zSql还有剩余的内容,那么这些剩余的内容被存放到pZTail中,不包括终止符

ppStmt:能够使用sqlite3_step()执行的编译好的准备语句的指针,如果错误发生,它被置为NULL,如假如输入的文本不包括sql语句。调用过程必须负责在编译好的sql语句完成使用后使用sqlite3_finalize()删除它。

sqlite3_step:执行SQL语句

int sqlite3_step(sqlite3_stmt*)

实例:

rc = sqlite3_open("test.db",&db);

rc=sqlite3_prepare(db,“select * from test_table",-1,&stmt,0);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值