SQLite3总结

SQLite3总结,第1张

概述1、回调函数答应结果 void print_row(int n_values, char** values){ int i; for (i = 0; i < n_values; ++i) { //printf("%10s", values[i]); printf("%s ", values[i]); } printf("\n");}int

1、回调函数答应结果

voID print_row(int n_values,char** values){    int i;    for (i = 0; i < n_values; ++i) {        //printf("%10s",values[i]);		printf("%s ",values[i]);    }    printf("\n");}int print_result(voID* data,int n_columns,char** column_values,char** column_names){    if (!column_names_printed) {        print_row(n_columns,column_names);        column_names_printed = 1;    }	    print_row(n_columns,column_values);		return 0;}

2、获取数据库所有表名
rc = sqlite3_exec(db,"select name from sqlite_master where type='table'",print_result,NulL,&errMsg);

3、获取表内所有字段名

rc = sqlite3_exec(db,"PRAGMA table_info([students])",&errMsg);

4、写入二进制数据
int savebin(){	sqlite3 *db;	sqlite3_stmt *stat;	char *zErrMsg = 0;	char buffer2[1024]="0";	int result;		result = sqlite3_open("sqlite.db",&db);		if(result)	{		cout<<"Open the database sqlite.db Failed"<<endl;	}		else		cout<<"Open the database sqlite.db sucessfully"<<endl;		sqlite3_exec(db,"CREATE table linhui (flIEname varchar(128) UNIQUE,fzip blob);",&zErrMsg);			//sqlite3_prepare()第一个参数跟前面一样,是个 sqlite3 * 类型变量,第二个参数是一个 sql 语句。这个 sql 	//语句特别之处在于values 里面有个 ? 号。在sqlite3_prepare函数里,?号表示一个未定的值,它的值等下才插入。	sqlite3_prepare(db,"insert into linhui values ('./images/5.bmp',?);",-1,&stat,0);		file *fp;	long filesize = 0;	char * ffile;	fp = fopen("./100.png","rb");	if(fp != NulL)	{		fseek(fp,SEEK_END);  //将fp指针退回到距离文件结尾0个字节处。		filesize = ftell(fp);  //函数 ftell() 用于得到文件位置指针当前位置相对于文件首的偏移字节数。		fseek(fp,SEEK_SET);   //将fp指针指到距离文件头0个字节处。		ffile = new char[filesize+1];  //创建一个空间为dilesize大小的字符型数组。		size_t sz = fread(ffile,sizeof(char),filesize+1,fp);   //将fp指针指向的文件读取filesize+1个大小的以char为元素单位大小,到ffile中。				fclose(fp);   //关闭文件读取	}			//sqlite3_bind_blob()函数中。?号的索引。前面prepare的SQL语句里有一个?号,假如有多个?号怎么插入?方法就是改变 bind_blob 函数第2个参数。	//这个参数我写1,表示这里插入的值要替换 stat 的第一个?号(这里的索引从1开始计数,而非从0开始)。	//如果你有多个?号,就写多个 bind_blob 语句,并改变它们的第2个参数就替换到不同的?号。如果有?号没有替换,sqlite为它取值null。	//本函数是将图片保存到stat的表中。	sqlite3_bind_blob(stat,1,ffile,filesize,NulL); 		sqlite3_step(stat);  //通过这个语句,stat 表示的SQL语句就被写到了数据库里。	delete(ffile);	sqlite3_finalize(stat);	sqlite3_close(db);	return 0;}  

5、从库内读出二进制数据

int readbin(){	sqlite3 *db;	sqlite3_stmt *stat;	char *zErrMsg = 0;	char buffer2[1024]="0";	int result;		result = sqlite3_open("sqlite.db",&db);		if(result)	{		cout<<"Open the database sqlite.db Failed"<<endl;		return 0;	}		else		cout<<"Open the database sqlite.db sucessfully"<<endl;		sqlite3_exec(db,&zErrMsg);			sqlite3_prepare(db,"select * from linhui;",0);	sqlite3_step(stat);	const voID * test = sqlite3_column_blob(stat,1);	int size = sqlite3_column_bytes(stat,1);	sprintf(buffer2,"%s",test);		file *fp2;	fp2 = fopen("200.png","wb");	if(fp2 != NulL)	{		size_t ret = fwrite(test,size,fp2);  //将fp2的图片写进test中		fclose(fp2);	}	sqlite3_finalize(stat);	sqlite3_close(db);	return 0;} 

6、语法

清空表内数据

DELETE FROM 表


更新数据

UPDATE table_nameSET column1 = value1,column2=value2...,columnN = valueNWHERE [condition];




7、模糊匹配

sql模糊查询语句
  sql模糊查询,使用like比较字,加上sql里的通配符,请参考以下:
  1、liKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
  2、liKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
  3、liKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
  4、liKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。
  5、liKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
  6、liKE'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。
  7、liKE'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。
  下面这句查询字符串,根据变量 zipcode_key 在邮政编码表 zipcode 中查询对应的数据,这句是判断变量 zipcode_key 为非数字时的查询语句,用 % 来匹配任意长度的字符串,从表中地址、市、省三列中查询包含关键字的所有数据项,并按省、市、地址排序。这个例子比较简单,只要你理解了方法就可以写出更复杂的查询语句。
  sql = "select * from zipcode where (address like'%" & zipcode_key & "%') or (city like'%" & zipcode_key & "%') or (province like'%" & zipcode_key & "%') order by province,city,address


8、一个可视化数据库管理工具

NaviCat,功能强大,可以连接主流的数据库,非常好用

总结

以上是内存溢出为你收集整理的SQLite3总结全部内容,希望文章能够帮你解决SQLite3总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/sjk/1164112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存