SQL C 接口
来源:互联网 发布:吴峻申 上海 程序员 编辑:程序博客网 时间:2024/05/22 14:22
网站: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;
}
0 0
- SQL C 接口
- SQL relay的C接口
- 【SQL】MySQL的C语言接口学习
- SQL接口
- C#-接口
- C#-接口
- C#:接口
- C#-接口
- c#-接口
- C#---接口
- [C#] 白话C#:接口
- C接口与CS接口
- 关于sqlite3的C接口中的sql语句的查找关键字需要带上引号的问题
- iOS开发之SQLite-C语言接口规范(二) —— Prepared Your SQL Statements
- javax.sql.DataSource接口
- javax.sql.DataSource接口
- 接口 java.sql.Statement
- 5.1 database/sql接口
- 实现CodeIgniter在eclipse中的自动补全
- java反射详解
- IOS 给Button设置一个简单的动画
- find peak element
- Java - Thinking in Java 第4章 控制执行流程
- SQL C 接口
- 高并发系统中,数据库相关知识
- 怎样用大白菜U盘安装版Win8系统
- C1_作业
- Rust中文翻译19
- 由malloc内存分配是否连续 引出的 一些概念
- FMDB官方使用文档-GCD的使用-提高性能(翻译)
- mysql乱码问题
- js怎么打印对象?