`
huobengluantiao8
  • 浏览: 1022057 次
文章分类
社区版块
存档分类
最新评论

IOS学习之sqlite的创建数据库,表,插入查看数据

 
阅读更多

IOS sqlite数据库操作。步骤是:

先加入sqlite开发库libsqlite3.dylib,

新建或打开数据库,

创建数据表,

插入数据,

查询数据并打印

1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib


2、sqlite 的方法

sqlite3 *db, 数据库句柄,跟文件句柄FILE很类似

sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句
sqlite3_open(), 打开数据库,没有数据库时创建。
sqlite3_exec(), 执行非查询的sql语句
Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。
Sqlite3_close(), 关闭数据库文件
还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(), 取text类型的数据。
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(), 取int类型的数据


3、获取沙盒目录,并创建或打开数据库。

viewController.h头文件添加一个成员变量,并包含头文件sqlite3.h

#import <UIKit/UIKit.h>
#import <sqlite3.h>


@interface ViewController : UIViewController
{
    sqlite3 *db;
}
@end

在.m文件 定义宏,方面后面使用

#define DBNAME    @"personinfo.sqlite"
#define NAME      @"name"
#define AGE       @"age"
#define ADDRESS   @"address"
#define TABLENAME @"PERSONINFO"

   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [paths objectAtIndex:0];
    NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];
    
    if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {
        sqlite3_close(db);
        NSLog(@"数据库打开失败");
    }

sqlite3_open,如果数据不存在,则创建。运行。这是在沙盒目录下能看到数据库文件(如何打开模拟器沙盒目录请参考:IOS学习之IOS沙盒(sandbox)机制和文件操作(一)



4、创建数据表

创建一个独立的执行sql语句的方法,传入sql语句,就执行sql语句

-(void)execSql:(NSString *)sql
{
    char *err;
    if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
        sqlite3_close(db);
        NSLog(@"数据库操作数据失败!");
    }
}
创建数据表PERSONINFO的语句

NSString *sqlCreateTable = @"CREATE TABLE IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, address TEXT)";
    [self execSql:sqlCreateTable];
运行程序,数据表创建了。怎么知道数据表创建了呢?我们用火狐的Sqlite Manager插件工具打开数据库文件看看。可以在火狐浏览器里安装这个插件。打开


四个字段都出现是表中了。

5、插入数据:

NSString *sql1 = [NSString stringWithFormat:
					 @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",
					 TABLENAME, NAME, AGE, ADDRESS, @"张三", @"23", @"西城区"];
    
    NSString *sql2 = [NSString stringWithFormat:
                      @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",
                      TABLENAME, NAME, AGE, ADDRESS, @"老六", @"20", @"东城区"];
    [self execSql:sql1];
    [self execSql:sql2];
运行程序,插入两条数据,用火狐的sqlite工具查看


6、查询数据库并打印数据

 NSString *sqlQuery = @"SELECT * FROM PERSONINFO";
    sqlite3_stmt * statement;
    
    if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {
        while (sqlite3_step(statement) == SQLITE_ROW) {
            char *name = (char*)sqlite3_column_text(statement, 1);
            NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];
            
            int age = sqlite3_column_int(statement, 2);
            
            char *address = (char*)sqlite3_column_text(statement, 3);
            NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];
            
            NSLog(@"name:%@  age:%d  address:%@",nsNameStr,age, nsAddressStr);
        }
    }
    sqlite3_close(db);
打印结果:

2012-06-29 13:25:32.205 sqlitDemo[3587:f803] name:张三  age:23  address:西城区
2012-06-29 13:25:32.206 sqlitDemo[3587:f803] name:老六  age:20  address:东城区

最后关闭数据库。

例子代码:http://download.csdn.net/detail/totogo2010/4400911

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!



分享到:
评论

相关推荐

    iOS SQLite 数据库

    iOS SQLite数据库的简单demo 包括数据查询,插入,删除,初始化等。

    如何批量导入数据到Sqlite数据库

    做android和ios开发的一般都用Sqlite数据库,有的时候数据需要批量导入,那么如何导入呢?  在这里,介绍2种方法供大家参考。  一、用sqlite命令  以windows系统为例,linux下命令是一样的。  1.安装...

    iOS sqlite3的简单应用

    通过sqlite数据库来保存数据,实现数据的显示,其中将sqlit封装在一个类中,可以很方便使用。其中支持数据的插入,更新。

    ios-GDatabase--基于ORM的FMDB数据库存储解决方案. 面向模型API. 一句代码存储,读取.对存储模型无需继承BaseObject. 可自定义多主键,使用sqlite 关键字.自定义序列化字段等.极大方便项目中使用..zip

    支持sqlite 保留字作为字段插入. 无需考虑模型属性命名. 支持多主键,单一主键,自增主键数据表创建 支持模型黑名单. 可以自定义部分字段不进行数据库存储操作. 支持模型字段自定义序列化. 无需手动创建数据表. 无需...

    SQLite.viewer:一个优雅的库,用于在iOS应用程序中调试sqlite数据库

    SQLite.viewer 一个优雅的库,用于在iOS应用程序中查看,编辑或调试sqlite数据库。 受启发。特征列出可用的数据库列表表运行原始查询去做 插入行 编辑行 删除行 新的用户界面和用户体验用法在AppDelegate.swift文件...

    iOS中SQLite的操作方法

    今天终于花了点时间把之前项目中使用到的对SQLite操作的方法整理一下并上传到github上,下载地址:...// 插入语句 - (void)insertTable { // 创建sql语句 NSString *sql = @insert into te

    FMDB框架的MOME

    注意插入的数据使用了通配符,这跟iphone直接使用sqlite借口的绑定变量是一样的,后面的通配符匹配的数据。 //插入数据使用OC中的类型 text对应为NSString integer对应为NSNumber的整形 这样我们就查询返回了一条...

    cordova-sqlite-porter:CordovaPhonegap 插件使用 SQL 或 JSON 导入导出 SQLite 数据库

    适用于任何支持 Common-JS 模块(即 NodeJS、Webpack)并通过 SQLite 数据库提供 WebSQL API 的 JavaScript 环境 适用于在 WebView中支持 HTML5 WebSQL DB 的所有 Cordova 平台: 安卓 IOS 泰森 黑莓10 通过插件...

    SQLite ORM框架PKLormapping

    •支持面向对象,零SQL操作数据库 •支持模拟器版本和真机版本 •支持自定义SQL扩展 •支持1级缓存,万级数据可达到百倍速度获取 •支持c中基础类型映射,推荐使用NSNumber进行封装 •支持分页查询,排序 •支持...

    Swift版SQLite ORM框架PKLormapping

    •支持面向对象,零SQL操作数据库 •支持模拟器版本和真机版本 •支持自定义SQL扩展 •支持1级缓存,万级数据可达到百倍速度获取 •支持c中基础类型映射,推荐使用NSNumber进行封装 •支持分页查询,排序 •支持...

    基于FMDB数据库操作类PYFMDB.zip

    前言之前是一直做web开发,对于做web开发的人而言一定熟悉各种ORM,各种语言针对mysql的ORM有很多,比如PHP的各类框架yii,thinkphp,laravel,ruby语言的rails, GO语言的beego等,IOS开发则面对的数据库是sqlite。...

    CoreData的使用包括实体关联的数据插入.字段中存储对象

    iOS中coredata针对数据库sqlite实现增删改查,并且实现对象当成字段存储,两实体件relationship时数据的存储

    数据更新和赋值工具

    1、通过数据库配置文件生成或更新客户端Sqlite数据库的表结构 2、NSDictionary数据自动赋值给模型类对象 3、将模型类对象自动插入Sqlite数据库 4、将Sqlite数据库查询结果自动赋值给模型类对象 5、通过...

    SQLite Flutter插件-Flutter开发

    支持事务和批处理在Open Helpers期间进行自动版本管理,以进行插入/查询/更新/删除查询使用sqflite_common_ffi在iOS和Android Linux / Windows / DartVM支持下在后台线程中执行的数据库操作文档文档API指南

    sqflite:SQLite Flutter插件

    sqflite SQLite插件。 支持iOS,Android和MacOS... 支持交易和批次打开期间自动进行版本管理插入/查询/更新/删除查询的助手在iOS和Android上的后台线程中执行的数据库操作使用Linux / Windows / DartVM支持文献资料指导

    :watermelon: React式和异步数据库,适用于强大的 React 和 React Native 应用程序 :high_voltage:

    React式数据库框架构建强大的 React 和 React Native 应用程序,可从数百条记录扩展到数万条记录并保持快速 :high_voltage: WatermelonDB :high_voltage: 无论您有多少数据,都立即启动您的应用程序 :chart_...

    Xamarin-Forms-Shopping-Cart:Xamarin通过替换工具栏项来形成购物车

    Xamarin-表格-购物车Xamarin通过替换工具栏项目形成购物车。建立状态平台建造状态Android版 ... 这里的购物车页面使用持久性存储,第二页显示从Web服务获取数据并将其显示在列表视图中,第三页使用本地SQLite数据库插入

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Sqlite 一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中 W3C 万维网联盟,创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。主要的工作是发展 Web 规范,...

    ShoppingCarts:对购物车进行单元测试

    这里的购物车页面使用持久性存储,第二页显示从Web服务获取数据并将其显示在列表视图中,第三页使用本地SQLite数据库插入,编辑,检索和删除记录。 此项目使用进行崩溃报告和分析,这需要iOS和android App机密,...

    SimpleTOdoApp-in-Flutter:使用Flutter的简单To Do应用

    在iOS和Android上的后台线程中执行的数据库操作 path_provider Flutter插件,用于查找文件系统上的常用位置。 支持iOS和Android。 用法 要使用此插件,请中将path_provider添加为。 国际图书馆 该库提供国际化和...

Global site tag (gtag.js) - Google Analytics