C语言使用sqlite3数据库【第三节】

int sqlite3_get_table(
  sqlite3 *db,          /* 数据库句柄 */
  const char *zSql,     /* SQL 语句 */
  char ***pazResult,    /* 查询结果 一大堆的一维数组*/
  int *pnRow,           /* 记录条数 也就是多少行*/
  int *pnColumn,        /* 字段数 也就是多少列 不过数据也是根据这个来定位的 例如:第一行:1,2,3 那么这个数值默认就是3,因为第一行是字段名,取的自然是列数,那么怎么取各个数据的位                           置呢?答:从下一行开始 例如 4 就是第一个数据了,然后依次从左向右的移动,数值发生改变,形成了数据定位!个人理解,大神勿喷!*/
  char **pzErrmsg       /* 错误信息 跟前面errmsg一样 */
);
sqlite3_free_table(char **result);//释放查询的缓存

那么大家请看以下的源码注释:

# include <stdio.h>
# include "sqlite3.h"
# include <stdlib.h>
int main(void)
{
int i;
int j;
sqlite3 *db;//建立一个sqlite3类型的指针db!可以当做数据库的操作句柄。
//没有这个句柄那么所有的sqlite3函数都没有任何实际意义
const char *SQL1="insert into sjk values(1,‘myd‘,‘2013-10-9‘);";//将SQL语句赋值在变量里!
const char *SQL2="insert into sjk values(2,‘myd‘,‘2013-10-9‘);";//SQL语句我就不多说了。
//从数据库查询数据
const char *SQL3="select * from sjk;";//这里是重点我们在最下面可以看到回调函数的用法!
char *errmsg=0;
char** pResult;
int nRow;
int nCol;
int Feedback = sqlite3_open("sqlite3.db", &db);
//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件,并返回给db句柄值。
if( Feedback != SQLITE_OK )
{
printf("没有打开名为:sqlite3.db 的数据库\n 原因是:%s\n", sqlite3_errmsg(db));
system("pause");
//sqlite3_errmsg()是返回错误后的提示信息!参数是数据库的操作句柄。
sqlite3_close(db);
//sqlite3_close()是关闭指定数据库句柄的数据库!
exit(-1);//非正常退出!
}
else printf("成功打开或成功创建 名为:sqlite3.db !\n");
sqlite3_exec(db,"create table sjk(id integer,name text,birthday blob)",0,0,&errmsg);//创建表
sqlite3_exec(db,SQL1,0,0,&errmsg);//插入数据1
sqlite3_exec(db,SQL2,0,0,&errmsg);//插入数据2
printf("插入数据成功\n");
Feedback = sqlite3_get_table(db,SQL3,&pResult,&nRow,&nCol,&errmsg);//查询数据将数据返回到&pResult
int nIndex = nCol; //在这篇文章开始之前我就做过注释解析,请查看,然后分析为什么这么做?
printf("共有%d列/n",nIndex);//查出默认字段数相当于列数
for(i=0;i<nRow;i++)//查询第几行的循环
{
for(j=0;j<nCol;j++)//查询一行里面的数据循环
{
printf("%s=%s\n",pResult[j],pResult[nIndex]);
++nIndex;//定位下一个数据,以便于字段名符合!
}
}
sqlite3_free_table(pResult);//释放内存
sqlite3_close(db);//关闭数据库
db = 0;//清除数据库句柄
printf("数据库关闭成功!\n");
system("pause");//暂停DOS以便于查看
return 0;
}

那么本教程的基础篇就在这里告一段落!然而有一些人问我,说为什么从第二节课开始我就一直用源代码和注释为大家讲解呢?也不是夸大家,我问问你,如果你没有学会SQL语句还会考虑sqlite应用于哪个平台?如果你不会C语言,那么你还会用C语言来操作sqlite吗?所以很多基础的问题我就不给大家讲解了。那么下一章,我将为大家讲解中级篇。来用它做一些DOS文字游戏!
时间: 2024-11-03 03:41:03

C语言使用sqlite3数据库【第三节】的相关文章

C语言使用SQLite3数据库

原文:C语言使用SQLite3数据库 SQLite是一个著名的免费数据库(不管是商用还是私人使用都免费),已经向众多公司如Adobe, Airbus, Apple, google, GE, Microsoft等提供了支持. SQLite不像其它多数的SQL数据库,它没有一个独立的服务进程,它是独立的.无进程的数据库(用起来它也像一个语言库),它对数据的读写操作是直达磁盘的. 下面我们使用C语言来试用一个SQLite 1 先到http://www.sqlite.org/download.html下

Cocos数据篇[3.4](6) ——SQLite3数据库基础用法

[唠叨] 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据.SQLite 是使用非常广泛的 嵌入式数据库 ,它有小巧 .高效.跨平台.开源免费和易操作的特点.所以大量的被用于手机.PDA.MP3播放器.以及机顶盒设备. SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也是得心应手. 本文介绍一下SQLite3数据库的基础用法:增删改查. PS:另外对于SQLite的可视

Cocos2d-x数据篇06:SQLite3数据库基础用法

尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2430 [前言] 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据.SQLite 是使用非常广泛的 嵌入式数据库 ,它有小巧 .高效.跨平台.开源免费和易操作的特点.所以大量的被用于手机.PDA.MP3播放器.以及机顶盒设备. SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也

Cocos移植到Android的一些问题-SQLite3数据库移植问题

首选我们讨论一下SQLite3数据库移植问题.我们在第14章节介绍了在Win32平台使用SQLite3数据库,我们介绍了两种配置环境的方法:一种是使用Cocos2d-x提供的SQLite3库配置,另一种是从SQLite官网下载源代码拷贝的工程中.第一种方法配置起来比较麻烦,关键是Cocos2d-x提供的SQLite3库只是Win32没有其它平台的,目录结构如下所示.<游戏工程目录>\cocos2d\external\sqlite3│  Android.mk│├─include│      sq

sqlite3数据库的简要应用

Sqlite3数据库升级方案的变化. 1,  若是讲要升级的数据库版本更高,则从低版本数据库中拷贝与新数据库相同字段的内容,其他字段按照默认值创建.A->B->C这样逐个版本升级,每个版本升级对应一段代码.若是升级到更低版本数据库,则将数据库全部删掉重建. 2,  直接比对当前运行的数据库版本,和将要升级的最新的数据库版本(A->C),把相同的字段保存下来,不同的字段直接按照默认值方式升级.这样可以来回升级,尽量保存了更多的字段的内容. //创建一个table表,在insert语句(按照

C语言连接MySQL数据库(课程设计总结)

刚结束课程设计,也预示着假期马上就要到来了.本次课程设计并不算难,无非就是让做一个XXX系统,实现用户的注册.登录.菜单管理.超级用户等等一些功能,到现在为止已经做过好几个了,所以基本流程都熟悉了!我觉的最值得总结的地方就是:C语言与数据库连接,这块内容!因为之前都是用文件实现的. ★平台 这次课程设计主要用到: ● VC ++ 6.0 ● mysql-5.0.18-win32 ● Navicat for MySQL(MySQL 图形化的工具) ★配置 在写代码之前首先要让编译器知道MySQL数

python sqlite3 数据库操作

SQLite3是python的内置模块,是一款非常小巧的嵌入式开源数据库软件. 1. 导入Python SQLite数据库模块 import sqlite3 2. python sqlite3模块的API """ sqlite3.connect(database [,timeout ,other optional arguments]) 该 API 打开一个到 SQLite 数据库文件 database 的链接.您可以使用 ":memory:" 来在 RA

iOS SQLite3数据库操作

iOS中数据持久化分为四种:属性列表.对象归档.SQLite3和Core Data,SQLite3数据库操作是一个必不或缺的技术. SQLite3简介 SQLite3数据库是移动端(iOS.Android.嵌入式)上认定的关系型数据库,与MySQL.Oracle等数据库相比,具有轻量级的优势,这就造成了体积小.迅速.简单功能依旧强大等优势. SQLite3语句特点 不区分大小写 每一句以:结尾 SQLite字段类型 integer:整型 real:浮点值 text:文本字符串 blob:二进制类

C语言连接mysql数据库

操作系统:win7/64 编译软件:VS2010 数据库:5.7.11 从C语言连接mysql数据库包含两个步骤: 1 初始化连接句柄结构 2 实际创建连接 测试代码1: #include "stdafx.h" #include <WinSock2.h> /*socket通信,系统头文件*/ #include <windows.h> #include <stdio.h> #include "mysql.h" #pragma com