zoukankan      html  css  js  c++  java
  • [ios]sqlite轻量级数据库学习连接

    SQLLite (一)基本介绍

    http://blog.csdn.net/lyrebing/article/details/8224431

    SQLLite (二) :sqlite3_open, sqlite3_exec, slite3_close

    http://blog.csdn.net/lyrebing/article/details/8224802

    SQLLite (三):sqlite3_prepare_v2,sqlite3_step

    http://blog.csdn.net/lyrebing/article/details/8225983

    ios数据处理 SQLite基本知识

    http://www.cnblogs.com/hanjun/archive/2012/11/24/2785627.html

    http://blog.sina.com.cn/s/blog_6cad9db90101ar8c.html

    以下参考:http://www.cnblogs.com/hanjun/archive/2012/11/24/2785627.html

    在使用数据库的时候,主要任务是建立和数据库之间的连接,执行SQL语句。

         SQLite中有下面两个重要的对象(指向结构体的指针):

    sqlite3,

    代表数据库连接的对象。

    sqlite3_stmt,

    代表SQL语句的对象。

        SQLite中的重要函数:

    sqlite3_open(), 

    打开数据库的函数,返回值为整型,指代了打开操作的结果,若结果等于SQLITE_OK这个常量,则说明成功打开数据库。若打开失败,会返回相应的错误代码。

    sqlite3_prepare(),

     要执行SQL语句,必须先把它编译成字节码。sqlite3_prepare函数就是负责编译SQL语句。

    sqlite3_step(),

    使用sqlite3_prepare函数将SQL语句编译好了以后,可以使用step函数来执行。对于有返回值的执行语句(如select),调用一次sqlite_step函数将会执行并记录一行(row)有效的结果到sqlite3_stmt里。要继续获取后面的运行结果,就要再执行sqlite3_step函数直到所有结果都记录完毕。比如,sqlite3_stmt中有语句“select * from studentTable order by id”,若结果包含多条数据,则使用sqlite3_step()函数只能得到第一行的内容,继续调用该函数直到所有结果都已记录完毕。而对于没有返回值的语句(如INSERT/UPDATE/DELETE),执行一次即可。

      sqlite3_column(),

    对于select语句,在使用sqlite3_step运行后,需要将结果读出来。实际上不存在一个叫sqlite3_column()的函数,这是一系列函数的代称,它们共同的作用就是从当前的结果中按列号取出值。比如一个select语句运行后,其中的一条结果为 01 “what_if” "male"。这个结果就包含3列,那么就可以利用该函数,找出特定某一列的值,根据值类型的不同,需要调用不同的函数,比如针对第一列,类型为整型,调用sqlite3_column_int(stmt, 0)来返回第一列的值;而第二列的数据类型是文本(text),相应地,调用sqlite3_column_text(stmt, 1)得到第二列的文本信息。该函数还有字节类型(byte)、双精度型(double)等。

    sqlite3_finalize(),

     sqlite3_stmt使用完毕,用sqlite3_finalize()函数来销毁。如果把sqlite3_stmt看作对象的话,这个函数就相当于是它的析构函数。在结束使用sqlite3_stmt,必须要调用该函数,否则会造成内存泄露。

    sqlite3_close(),

    数据库操作结束后,需要将数据库连接关闭。用sqlite3_close()函数来关闭,显然,这是和sqlite_open()成对出现的。在关闭之前,需要使用sqlite3_finalize()来销毁所有sqlite3_stmt对象。

    sqlite3_exec(),

    sqlite3_exec()为执行sql语句提供了一种便捷的方法,只需要将sql语句的字符串(char *)传递给该函数即可。我们指定回调函数(callback)来处理执行后的返回值。不过一般情况下,sqlite3_exec()函数多用于执行无返回值的语句(CREATE/DROP等),对于有返回值的操纵(如select),常结合使用sqlite3_prepare、sqlite3_step()、sqlite3_clumn()获得执行结果。

     附表:

     最重要的SQLite API命令

    1.函数:sqlite3_open(参数:文件名、数据库地址)                                                                                                                                                        打开数据库 
    2.函数:sqlite3_prepare (参数: 数据库、UTF-8格式的SQL、最大读取长度、语句地址、结果地址)                                                                                          将UTF-8格式的SQL语句转换为编译后的语句,并返回指向该语句的指针,可将其传递给其他函数
    3.函数:sqlite3_step ( 参数:编译后的语句)                                                                                                                                                                  在编译后的语句返回的结果中向前移一条记录或返回错误                                                                                                                                                       
    4.函数:sqlite3_column_int  (参数:编译后的语句、字段编号)                                                                                                                                           返回当前记录中的一个int字段。还有其他几个类似的函数,它们返回当前记录中的指定字段 
    5.函数:sqlite3_column_string (参数:编译后的语句、字段编号) 
     从当前记录中返回一个char *,即一个字符串,还有其他几个类似的函数,它们返回当前记录中的指定字段
    6.函数:sqlite3_finalize (参数:编译后的语句) 
     删除编译后的语句
    7.函数:sqlite3_close  (参数:数据库) 
    关闭数据库
                                                                                              

                                                            

    使用SQLite数据库的一般步骤:

    1.打开数据库;

    2.以每次一条的方式准备语句;

    3.遍历结果--读取字段;

    4.删除语句; 

    5.关闭数据库。

    也可以用sqlite3_exec()和sqlite3_get_table()来简化上面的步骤。

  • 相关阅读:
    [转载]链接 构造最全的java面试题整理
    [转载]面试技巧问题:面试典型问题回答技巧
    [转载]工作面试时最难的25个问题
    [转载][转]tomcat server.xml配置详解
    [转载]链接 构造最全的java面试题整理
    [转载]转 构造最全的java面试题整理(线程篇)
    [转载]C++ 面试
    [转载]转 构造最全的java面试题整理(线程篇)
    [转载][转]tomcat server.xml配置详解
    [转载]面试技巧问题:面试典型问题回答技巧
  • 原文地址:https://www.cnblogs.com/lyggqm/p/4736002.html
Copyright © 2011-2022 走看看