zoukankan      html  css  js  c++  java
  • 数据库语句Sqlite 简单使用方法

    最近研究数据库语句,稍微总结一下,以后继续补充:

        1.首先要添加 libsqlite3.dylib 库。在添加库的时候,你会发现有个libsqlite3.dylib 还有一个 libsqlite3.0.dylib。这样你就会疑问,两个的区别。这里分析一下:实际上libsqlite3.dylib本身是个链接,它指向了libsqlite3.0.dylib。libsqlite3.dylib总是指向最新的sqlite动态库。

        2.在view中引入框架(2种方法)。

        

        

     (1)#import <sqlite3.h>    (2)#import"/usr/include/sqlite3.h"  

        

     

          sqlite3 *database;

        3.sqlite数据库是文件数据库,是保存在文件系统中的。

        在Documents下创建数据库(路径)

        。

        

        

        NSArray *documentsPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

       NSString *databaseFilePath = [[documentsPathobjectAtIndex:0]stringByAppendingPathComponent:@"mydb"];

        4.打开数据库

            if (sqlite3_open([databaseFilePathUTF8String], &database) ==SQLITE_OK) {

        

            NSLog(@"open sqlite db ok.");

        }

        5.

        建表语句

            char *errorMsg;

        

        constchar *createSql ="create table if not exists persons(id integer primary key autoincrement, name text)";

       if (sqlite3_exec(database, createSql,NULL,NULL, &errorMsg) ==SQLITE_OK) {

        

            NSLog(@"create ok");

        }

        6.

        向表中插入记载

        

        constchar *insertSql ="insert into persons (name) values ('zhangsan')";

       if (sqlite3_exec(database, insertSql,NULL,NULL, &errorMsg) ==SQLITE_OK) {

        

            NSLog(@"insert ok.");

        }else{

           NSLog(@"error:%s",errorMsg);

           sqlite3_free(errorMsg);

        }

        7.

        查询结果

        

        constchar *selectSql ="select id,name from persons";

       sqlite3_stmt *statement;  

            if (sqlite3_prepare_v2(database, selectSql, -1, &statement, nil) == SQLITE_OK) {

        

            NSLog(@"select ok");

           while (sqlite3_step(statement) ==SQLITE_ROW) {

               int _id =sqlite3_column_int(statement,0);

                

               char *name = (char*)sqlite3_column_text(statement,1);

               NSString *nsAddressStr = [[NSStringalloc]initWithUTF8String:name];

                

               NSLog(@"id:%i  name:%@",_id,nsAddressStr);

            }

        }

        8.关闭数据库

        

        sqlite3_close(database);

        

        sqlite3 *database;数据库句柄

        sqlite3_stmt    用于保存编译好的sql语句

        sqlite3_open()  打开数据库,没有的时候创建数据库

        sqlite3_exec()  执行非查询的sql语句

        sqlite3_prepare() 预备sql语句,执行select语句

        sqlite3_step()  再调用sqlite3_prepare后,应用这个函数在记载集中移动

        sqlite3_finalize() 释放sql资源

        sqlite3_close() 关闭数据库

        

        sqlite3_bind_int(stmt,1,1);  //绑定第一个int参数

        sqlite3_bind_text(stmt,2,[? UTF8String],-1,SQLITE_TRANSIENT);//绑定第二个字符串参数

        

        记载集中获得字段

        sqlite3_column_int()  取int类型数据

        sqlite3_column_text() 取text型数据

        sqlite3_column_blob() 取blob型数据

        

        

        

    #define SQLITE_OK           0   /* Successful result */

        

    /* beginning-of-error-codes */

        

    #define SQLITE_ERROR        1   /* SQL error or missing database */

        

    #define SQLITE_INTERNAL     2   /* Internal logic error in SQLite */

        

    #define SQLITE_PERM         3   /* Access permission denied */

        

    #define SQLITE_ABORT        4   /* Callback routine requested an abort */

        

    #define SQLITE_BUSY         5   /* The database file is locked */

        

    #define SQLITE_LOCKED       6   /* A table in the database is locked */

        每日一道理
    如果说友谊是一颗常青树,那么,浇灌它的必定是出自心田的清泉;如果说友谊是一朵开不败的鲜花,那么,照耀它的必定是从心中升起的太阳。 多少笑声都是友谊唤起的,多少眼泪都是友谊揩干的。友谊的港湾温情脉脉,友谊的清风灌满征帆。友谊不是感情的投资,它不需要股息和分红。(友谊可以换其他词语)

        

    #define SQLITE_NOMEM        7   /* A malloc() failed */

        

    #define SQLITE_READONLY     8   /* Attempt to write a readonly database */

        

    #define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite3_interrupt()*/

        

    #define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */

        

    #define SQLITE_CORRUPT     11   /* The database disk image is malformed */

        

    #define SQLITE_NOTFOUND    12   /* NOT USED. Table or record not found */

        

    #define SQLITE_FULL        13   /* Insertion failed because database is full */

        

    #define SQLITE_CANTOPEN    14   /* Unable to open the database file */

        

    #define SQLITE_PROTOCOL    15   /* NOT USED. Database lock protocol error */

        

    #define SQLITE_EMPTY       16   /* Database is empty */

        

    #define SQLITE_SCHEMA      17   /* The database schema changed */

        

    #define SQLITE_TOOBIG      18   /* String or BLOB exceeds size limit */

        

    #define SQLITE_CONSTRAINT  19   /* Abort due to constraint violation */

        

    #define SQLITE_MISMATCH    20   /* Data type mismatch */

        

    #define SQLITE_MISUSE      21   /* Library used incorrectly */

        

    #define SQLITE_NOLFS       22   /* Uses OS features not supported on host */

        

    #define SQLITE_AUTH        23   /* Authorization denied */

        

    #define SQLITE_FORMAT      24   /* Auxiliary database format error */

        

    #define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */

        

    #define SQLITE_NOTADB      26   /* File opened that is not a database file */

        

    #define SQLITE_ROW         100  /* sqlite3_step() has another row ready */

        

    #define SQLITE_DONE        101  /* sqlite3_step() has finished executing */ 

        

    当调用 sqlite3_prepare_v2() 函数的时候,是一个将SQL语句编译为sqlite外部一个结构体(sqlite3_stmt).

        

    该结构体中包含了将要执行的的SQL语句的信息.

        

    通常情况下,应该是返回0。还有一些时候是返回其他数值。

        

    我以1为例,简单分析一下错误处理的思路和方法:

        

     #define SQLITE_ERROR        1   /* SQL error or missing database */

        

        

        

        

        

        

    文章结束给大家分享下程序员的一些笑话语录: 人工智能今天的发展水平:8乘8的国际象棋盘其实是一个体现思维与创意的强大媒介。象棋里蕴含了天文数字般的变化。卡斯帕罗夫指出,国际象棋的合法棋步共有1040。在棋局里每算度八步棋,里面蕴含的变化就已经超过银河系里的繁星总数。而地球上很少有任何数量达到这个级别。在金融危机之前,全世界的财富总和大约是1014人民币,而地球人口只有1010。棋盘上,所有可能的棋局总数达到10120,这超过了宇宙里所有原子的总数!经典语录网

  • 相关阅读:
    JS第二天
    ES6
    Asp.net Core Web Mvc项目添加Jwt验证
    .Net Core 平台下创建WinForm窗体SignalR客户端
    .Net Core平台下实现SignalR客户端和服务端
    .Net Framework 平台下创建WinForm窗体SignalR客户端
    在.Net Framework平台下WPF实现SignalR客户端
    .Net Framework框架下实现SignalR客户端和服务端
    信息系统项目管理师10大管理47个过程域输入输出工具(项目人力资源管理)
    信息系统项目管理师10大管理47个过程域输入输出工具(项目质量管理)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3089735.html
Copyright © 2011-2022 走看看