• [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()来简化上面的步骤。

  • 相关阅读:
    Entity Framework Core 2.0 新特性
    asp.net core部署时自定义监听端口,提高部署的灵活性
    asp.net core使用jexus部署在linux无法正确 获取远程ip的解决办法
    使用xshell连接服务器,数字键盘无法使用解决办法
    使用Jexus 5.8.2在Centos下部署运行Asp.net core
    【DevOps】DevOps成功的八大炫酷工具
    【Network】Calico, Flannel, Weave and Docker Overlay Network 各种网络模型之间的区别
    【Network】UDP 大包怎么发? MTU怎么设置?
    【Network】高性能 UDP 应该怎么做?
    【Network】golang 容器项目 flannel/UDP相关资料
  • 原文地址:https://www.cnblogs.com/lyggqm/p/4736002.html
Copyright © 2020-2023  润新知