sqlite编程

sqlite编程,第1张

概述概要        本章主要简示了C\C++接口的sqlite编程,包括了创建数据库文件、创建表、对数据的增删改查等。 结果展示 流程概要 下载sqlite的源码,可将其编译成库使用,也可以直接加到工程里面使用。因为sqlite只有两个文件,所以我把它们直接放到工程里面编译 关于sqlite的使用可参照文章sqlite基本使用方法 程序退出时需要释放sql里面的内存 主要代码 #include " 概要

本章主要简示了C\C++接口的sqlite编程,包括了创建数据库文件、创建表、对数据的增删改查等。


结果展示


流程概要 下载sqlite的源码,可将其编译成库使用,也可以直接加到工程里面使用。因为sqlite只有两个文件,所以我把它们直接放到工程里面编译 关于sqlite的使用可参照文章sqlite基本使用方法 程序退出时需要释放sql里面的内存 主要代码

#include "sqlite3.h"#include <stdio.h>#include <stdlib.h>#include <time.h>voID PrintsqliteResult(char** ppResult,int nRow,int nCol){	/**************************************************************	* 查询结果是一个一维数组,每个数组元素是一个字符串,这些字符串可分为两	* 部分:字段名以及数据记录。比如如果查询结果又三个字段,则该数据结构是	* ===========查询结果数据结构示意图=================	* col1_name,col2_name,col3_name	* col1_rec1,col2_rec1,col3_rec1	* col1_rec2,col2_rec2,col3_rec2	* ...	* =============================================	**************************************************************/	for (int i=0; i<=nRow; i++)	{		printf("%8d ",i);		for (int j=0; j<nCol; j++)		{			printf("%16s ",ppResult[i*nCol + j]);		}		printf("\n");	}}int main(){	int nRet = 0;	sqlite3* db = NulL;	char** ppMsg = NulL;	char** ppResult = NulL;	srand(time(NulL));	nRet = sqlite3_open("sqlite.db",&db);	if(nRet != sqlITE_OK)	{		printf("Open sqlite file Failed.\n");		goto end;	}	char szCMD[512] = {0};		// 如果表不存在则创建表	sprintf(szCMD,"CREATE table IF NOT EXISTS staff(NO VARCHAR(7) PRIMARY KEY,name TEXT,age int);");	nRet = sqlite3_exec(db,szCMD,NulL,NulL);	if(nRet != sqlITE_OK)	{		printf("Create table Failed.\n");		goto end;	}		// 清空表内容	sprintf(szCMD,"DELETE FROM staff;");	nRet = sqlite3_exec(db,NulL);	if(nRet != sqlITE_OK)	{		printf("delete table content Failed.\n");		goto end;	}	int nNo = 2014000;	// 插入或者替换数据记录到表	for (int i=0; i<10; i++)	{		sprintf(szCMD,"INSERT OR REPLACE INTO staff VALUES ('%d','name_%d',%d);",nNo+i,rand()%1024,rand()%100+10);		nRet = sqlite3_exec(db,NulL);		if(nRet != sqlITE_OK)		{			printf("excute cmd occur error -> %s\n",szCMD);		}	}	// 查询数据	int nRow = 0;	int nCol = 0;	sprintf(szCMD,"SELECT * FROM staff ORDER BY NO;");	nRet = sqlite3_get_table(db,&ppResult,&nRow,&nCol,ppMsg);	if(nRet != sqlITE_OK)	{		perror(*ppMsg);		goto end;	}	else	{		printf("staff table content:\n");		PrintsqliteResult(ppResult,nRow,nCol);	}	// 删除数据	sprintf(szCMD,"DELETE FROM staff WHERE age >= 80");	nRet = sqlite3_exec(db,ppMsg);	if(nRet != sqlITE_OK)	{		perror(*ppMsg);		goto end;	}	// 更新数据记录,20岁以下匿名	sprintf(szCMD,"UPDATE staff set name='anonymous' where age < 20");	nRet = sqlite3_exec(db,ppMsg);	if(nRet != sqlITE_OK)	{		perror(*ppMsg);		goto end;	}	// 查询数据	sprintf(szCMD,nCol);	}end:	sqlite3_free_table(ppMsg);	sqlite3_free_table(ppResult);	sqlite3_close(db);	return 0;}

项目工程 总结

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

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存