SQL C 接口

网站:www.sqlite.org

1、打开数据库:

int sqlite3_open(

const char *filename,  /*数据库名,可包含路径*/

sqlite3 **ppDb             /*指向sqlite句柄的指针*/

);

成功返回0(宏定义为SQLITE_OK),失败返回错误码。

数据库名存在就打开,不存在就创建并打开。

2、关闭数据库:

int sqlite3_close(sqlite3* );

成功关闭返回0,失败返回错误码,打开一个数据库记得要关闭。

3、出错判断:

char *sqlite3_errmsg(sqlite3* );

4、执行sql操作

int sqlite3_get_table(

sqlite3 *db,           /*打开数据库的句柄*/

const char *zSql,   /*sql语句*/

char ***pazResult, /*指向sql执行结果的指针*/

int *pnRow,           /*满足条件的记录的数目*/

int *pnColumn,     /*每条记录包含的字段数目*/

char **pzErrmsg    /*错误信息指针的地址*/

);

成功返回0,失败返回错误码。

void sqlite3_free_table(char **result); /*释放存放记录的空间*/

5、执行sql操作:

int sqlite3_exec(

sqlite3 *,                                                     /*打开数据库句柄*/

const char *sql,                                           /*sql语句*/

int (*callback) (void *, int, char **, char **), /*执行函数*/

void *,                                                          /*函数的参数*/

char **errmsg                                              /*错误信息指针的地址*/

);

成功返回0,失败返回错误码。

执行函数:每找到一条自动执行一次函数

typedef int (*sqlite3_callback) (

void *para,      /*传递给函数的参数*/

int f_num,       /*记录中包含字段的数目*/

char **f_value, /*每个字段值的指针数组*/

char **f_name  /*每个字段名称的指针数组*/

);

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

示例1:在数据库中创建一个表

#include <stdio.h>

#include <stdlib.h>

#include <sqlite3.h>

static int callback(void *NotUsed, int argc, char **argv, char **azColName){

int i;

for(i=0; i<argc; i++){

printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");

}

printf("\n");

return 0;

}

int main(int argc, char* argv[])

{

sqlite3 *db;

char *zErrMsg = 0;

int  rc;

char *sql;

/* Open database */

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

if( rc ){

fprintf(stderr, "Can‘t open database: %s\n", sqlite3_errmsg(db));

exit(0);

}else{

fprintf(stdout, "Opened database successfully\n");

}

/* Create SQL statement */

sql = "create table company("  \

"id int primary key  not null," \

"name              text  not null," \

"age                  int   not null," \

"address           char(50)," \

"salary              real );";

/* Execute SQL statement */

rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);

if( rc != SQLITE_OK ){

fprintf(stderr, "SQL error: %s\n", zErrMsg);

sqlite3_free(zErrMsg);

}else{

fprintf(stdout, "Table created successfully\n");

}

sqlite3_close(db);

return 0;

}

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

示例2:在创建的表中查询数据

#include <stdio.h>

#include <stdlib.h>

#include <sqlite3.h>

int main(int argc, char* argv[])

{

sqlite3 *db;

char *zErrMsg = 0;

int rc;

char **dbResult;

int nRow, nColumn;

int index = 0;

int i, j;

char *sql;

/* Open database */

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

if( rc ){

fprintf(stderr, "Can‘t open database: %s\n", sqlite3_errmsg(db));

exit(0);

}else{

fprintf(stderr, "Opened database successfully\n");

}

/* Create SQL statement */

sql = "select * from company;";

/* Execute SQL statement */

rc = sqlite3_get_table(db, sql, &dbResult, &nRow, &nColumn, &zErrMsg);

if( rc == SQLITE_OK ){

printf("select %d number\n", nRow);

for (i=0; i<nRow; i++) {

for(j=0; j<nColumn; j++) {

printf("name:%s  value:%s", dbResult[j], dbResult[index]);

}

printf("\n");

}

}

sqlite3_free_table(dbResult);

sqlite3_close(db);

return 0;

}

版权声明:有不正确的地方,还望各位指正指导,Thanks!

时间: 2024-10-13 18:23:20

SQL C 接口的相关文章

SQLite3 C/C++ 开发接口简介

SQLite3 C/C++ 开发接口简介 1.0 总览 SQLite3是SQLite一个全新的版本,它虽然是在SQLite 2.8.13的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API. SQLite3是为了满足以下的需求而开发的: 支持UTF-16编码. 用户自定义的文本排序方法. 可以对BLOBs字段建立索引. 因此为了支持这些特性我改变了数据库的格式,建立了一个与之前版本不兼容的3.0版. 至于其他的兼容性的改变,例如全新的API等等,都将在理论介绍之后向你说明,这样

转】Spark SQL 之 DataFrame

原博文出自于: http://www.cnblogs.com/BYRans/p/5003029.html 感谢! Spark SQL 之 DataFrame 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述(Overview) Spark SQL是Spark的一个组件,用于结构化数据的计算.Spark SQL提供了一个称为DataFrames的编程抽象,DataFrames可以充当分布式SQL查询引擎. DataFrames DataFrame是一个分布式的数据

主流开源SQL(on Hadoop)总结

转载至 大数据杂谈 (BigdataTina2016) 使用SQL 引擎一词是有点随意的.例如Hive 不是一个引擎,它的框架使用MapReduce.TeZ 或者Spark 引擎去执行查询,而且它并不运行SQL,而是HiveQL,一种类似SQL 的语言,非常接近SQL."SQL-in-Hadoop" 也不适用,虽然Hive 和Impala 主要使用Hadoop,但是Spark.Drill.HAWQ 和Presto 还可以和各种其他的数据存储系统配合使用.不像关系型数据库,SQL 引擎独

6大主流开源SQL引擎总结,遥遥领先的是谁?

根据 O'Reilly 2016年数据科学薪资调查显示,SQL 是数据科学领域使用最广泛的语言.大部分项目都需要一些SQL 操作,甚至有一些只需要SQL.本文就带你来了解这些主流的开源SQL引擎!背景介绍 本文涵盖了6个开源领导者:Hive.Impala.Spark SQL.Drill.HAWQ 以及Presto,还加上Calcite.Kylin.Phoenix.Tajo 和Trafodion.以及2个商业化选择Oracle Big Data SQL 和IBM Big SQL,IBM 尚未将后者

导出SQL运行结果的方法总结

本文通过几个例子,介绍了几种下载MaxCompute SQL计算结果的方法.为了减少篇幅,所有的SDK部分都只举例介绍Java的例子. SQLTask SQLTask是SDK直接调用MaxCompute SQL的接口,能很方便得运行SQL并获得其返回结果.从文档可以看到,SQLTask.getResult(i); 返回的是一个List.用户可以循环迭代这个List,获得完整的SQL计算返回结果.不过这个方法有个缺陷,可以参考这里这里提到的SetProject READ_TABLE_MAX_ROW

sql语句的进化

1.JDBC 1)JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问. 2)它由一组用Java语言编写的类和接口组成,是一个独立于特定数据库管理系统.通用的sql数据库存储和操作的公共接口. 3)JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序. 2.JDBC常用(重要)类/接口 1)java.sql.Driver接口: 该接口是所有JDB

谈谈C#中的接口

接口的相关陈述 1.一个接口定义了一个契约. 2.接口可以包容方法.C#属性.事件.以及索引器. 3.在一个接口声明中,我们可以声明零个或者多个成员. 4.所有接口成员的默认访问类型都是public. 5.如果在接口成员声明中包括了任何修饰符,那么会产生一个编译器错误. 6.与一个非抽象类类似,一个抽象类必须提供接口中所有成员的实现,只要这些成员在这个类的基类中出现过. 接口的理解 1. 面向接口编程利用OO的一个基本性质--多态,相同方法不同表现.可以这样想一下,client编写自己程序的时候

数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(二)之SQL解析

关注微信公众号:[芋艿的后端小屋]有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言都将得到认真回复.甚至不知道如何读源码也可以请教噢. 新的源码解析文章实时收到通知.每周更新一篇左右. 认真的源码交流微信群. 1. 概述 2. SQLParsingEngine 3. SQLParser SQL解析器 3.2.1 #parse

JAVA基础笔记(很实用)继承-多态-抽象类-接口-异常-集合-IO-线程-Socket

第七章:Java继承 一.继承的概念 1.一个父类派生出一个子类的机制称为继承. 2.承是重用程序代码的有力手段,当多个类之间存在相同的属性和方法时,可以从这些类中抽象出父类. 3.们只需要在父类中定义这些属性和方法,而子类无须重新定义这些属性和方法,直接从父类继承即可. 4.通过继承,子类就会自动的拥有在父类中定义的属性和方法. 5.两个或多个类的成员中存在一部分相同的情况,通过继承机制,可以利用现有的类来创建新的类. 6.子类不但拥有父类的成员,还可以定义新的成员. 7.可以提高软件的可重用