首页 > 软件开发 > c语言 > 正文
12.6.2  常用函数及返回编码
2015-11-23 14:13:32     我来说两句      
收藏    我要投稿

在SQLite数据库中,常用的函数主要分为数据库创建关闭类、数据操纵语句类和数据查询填充语句类等相关的函数类型。在本小节中简单介绍这些函数,至于这些函数如何,将在后面的小节中介绍。

这些常用函数,在被执行后,经常根据不同的情况来返回不同的编码值,这样使用者根据这返回的编码值,提供的信息,来判断情况。表12-3列出了这些函数返回的常用编码。

表12-3 常用编码参考表12-3


数据库打开关闭类,这个类型包含的函数主要完成数据的打开和关闭功能,这样的函数有以下几个:

(1) int sqlite3_open(const char*, sqlite3**)

该函数,主要完成数据库的创建和打开。第一参数是指数据库存放的路径,第二个参数是指数据库实例变量。如果所指路径位置不存在数据库,则它会创建一个新的数据库,否则它将打开该路径位置的数据库。默认编码utf-8。函数返回值参考常用编码参考表12-3。

(2)int sqlite3_open16(const void*, sqlite3**)

该函数的功能同上面的函数一样,也是用于创建或者打开数据库, 参数参考上面的介绍。两个函数的不同在于,这个函数采用的是utf-16编码。函数返回值参考常用编码参考表12-3。

(3)int sqlite3_close(sqlite3*)

该函数,主要完成对数据库的关闭。参数为数据库实例变量。函数返回值参考常用编码参考表12-1。

数据操纵语句类,这个类型主要完成对数据库数据的插入(insert)、修改(update)和删除(delete)处理。数据操纵语句一般分预处理和执行处理两个过程那,也就是指执行之前,先做预处理。

在SQLite3中,用做与预处理的函数主要包括以下几个函数, 其中sqlite3_stmt为数据结构类型。

&世界杯外围投注官网61656;

int sqlite3_prepare(sqlite3*, const char*, int, sqlite3_stmt**, const char**)
&世界杯外围投注官网61656;int sqlite3_prepare16(sqlite3*, const void*, int, sqlite3_stmt**, const void**)
&世界杯外围投注官网61656;int sqlite3_finalize(sqlite3_stmt*)
&世界杯外围投注官网61656;int sqlite3_reset(sqlite3_stmt*)

在预处理后,,应该使用下面这个函数来执行:

    int sqlite3_step(sqlite3_stmt*);

在SQLite3中,还有一种,类似参数化语句的执行方式,需要绑定参数,下面列出了这些常用的绑定函数:

&世界杯外围投注官网61656;int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*))
&世界杯外围投注官网61656;int sqlite3_bind_double(sqlite3_stmt*, int, double)
&世界杯外围投注官网61656;int sqlite3_bind_int(sqlite3_stmt*, int, int)
&世界杯外围投注官网61656;int sqlite3_bind_int64(sqlite3_stmt*, int, long long int)
&世界杯外围投注官网61656;int sqlite3_bind_null(sqlite3_stmt*, int)
&世界杯外围投注官网61656;int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*))
&世界杯外围投注官网61656;int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int n, void(*)(void*))
&世界杯外围投注官网61656;int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*)

注意:上面的这些绑定函数,第二个参数是sql参数的索引值,以1开始。

数据查询填充语句类,这个类型函数主要完成数据的查询和数据的填充处理。它的处理过程跟上述的数据操纵语句类似。唯一的不同需要列值绑定。当sqlite3_step返回SQLITE_ROW,需要以下列函数来接收数据。

&世界杯外围投注官网61656;

const void *sqlite3_column_blob(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;int sqlite3_column_bytes(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;int sqlite3_column_bytes16(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;double sqlite3_column_double(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;int sqlite3_column_int(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;const void *sqlite3_column_text16(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;int sqlite3_column_type(sqlite3_stmt*, int iCol)
&世界杯外围投注官网61656;sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol)

在上述参数中,注意,iCol参数起始值是0。

判断数据列的类型,就需要用到了函数sqlite3_column_type,根据该函数的返回编码就可以判断出列属于哪个数据类型。sqlite3_column_type函数的具体展现形式如下:

          int sqlite3_column_type(sqlite3_stmt*, int iCol);

表12-4列出了这个函数返回的编码以及说明。

 
 

在SQLite3的应用中,sqlite3_exec函数也经常用到,它主要执行SQL 语句。特别是数据操纵,如果不涉及到检索数据,就可以应用它。

    int sqlite3_exec(sqlite3* ppDb, const char *sql,  int (*callback)(void*,int,char**,char**),
      void *,   char **errmsg );

在这个函数中,第1个参数不再说了,就是是前面open函数得到的指针。第2个参数constchar*sql是一条sql 语句,以\0结尾。第3个参数sqlite3_callback 是回调,当这条语句执行之后,sqlite3会去调用提供的这个函数。第4个参数void*是所提供的指针,可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里面,如果不需要传递指针给回调函数。第5个参数char** errmsg 是错误信息。注意是指针的指针。sqlite3里面有很多固定的错误信息。

在实际的应用中,通常,sqlite3_callback 和它后面的void*这两个位置都可以填NULL。填NULL表示不需要回调。比如做insert 操作,做delete操作,就没有必要使用回调。而当做select 时,就要使用回调,因为sqlite3 把数据查出来,得通过回调告诉查出了什么数据。

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:12.6.1 数据类型
下一篇:12.6.3 数据库的创建和打开及关闭
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站

世界杯外围投注官网