1.创建数据库

NSString * docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];

NSLog(@"%@",docPath);

NSString * filePath = [docPath stringByAppendingPathComponent:@"stu.sql"];

if (sqlite3_open([filePath UTF8String], &_mySQL)!=SQLITE_OK) {

NSLog(@"open error");

return 0;

}

NSLog(@"open ok");

2.创建表

NSString *createTablesql = @"create TABLE IF NOT EXISTS Student (id integer primary key autoincrement,name varchar(20),address varchar(20),icon blob)";

char *error = nil;

if (sqlite3_exec(_mySQL, [createTablesql UTF8String], nil, nil, &error)!=SQLITE_OK) {

NSLog(@"creat table error");

return 0;

}

NSLog(@"creat table ok");

3.插入数据

NSString *insertSql =  @"insert into Student (name,address,icon) values (?,?,?)";

sqlite3_stmt *statement;

if (sqlite3_prepare_v2(mysql, [insertSql  UTF8String], -1, &statement, NULL) != SQLITE_OK) {

NSLog(@"insert prepare error");

return;

}else{

NSLog(@"insert prepare ok");

NSData * imageData = UIImagePNGRepresentation(self.iconImageView.image);

sqlite3_bind_text(statement, 1, [_nameTextField.text UTF8String], -1, NULL);

sqlite3_bind_text(statement, 2, [_addTextField.text UTF8String], -1, NULL);

sqlite3_bind_blob(statement, 3, [imageData bytes], (int)[imageData length], NULL);

if(sqlite3_step(statement)!=SQLITE_DONE){

NSLog(@"insert error");

}else{

NSLog(@"insert ok");

}

}

sqlite3_finalize(statement);

4.查询数据

NSString *selectSql = @"select * from Student";

sqlite3_stmt *statement;

if (sqlite3_prepare_v2(mysql, [selectSql UTF8String], -1, &statement, NULL) != SQLITE_OK) {

NSLog(@"read prepare error");

return;

}else{

NSLog(@"read prepare ok");

while (sqlite3_step(statement)==SQLITE_ROW) {

Student * stu = [[Student alloc]init];

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

char * address = (char *)sqlite3_column_text(statement, 2);

Byte * bytes = (Byte *)sqlite3_column_blob(statement, 3);

int length = sqlite3_column_bytes(statement, 3);

NSData * data = [NSData dataWithBytes:bytes length:length];

UIImage * image = [UIImage imageWithData:data];

stu.name = [NSString stringWithUTF8String:name];

stu.address = [NSString stringWithUTF8String:address];

stu.icon = image;

[_studentArray addObject:stu];

}

}

sqlite--代码操作的更多相关文章

  1. Unity3D连接sqlite数据库操作C#版

    unity3d有自己对应的sqlite.dll分别需要三个文件 1.Mono.Data.Sqlite.dll 在unity安装文件“Unity\Editor\Data\MonoBleedingEdge ...

  2. 实验8 SQLite数据库操作

    实验报告 课程名称 实验8  SQLite数据库操作 实验日期 2016.5.6 实验项目名称 多媒体应用开发 实验地点 S30010 实验类型 □验证型    √设计型    □综合型 学  时 一 ...

  3. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  4. SQLite CRUD操作

    SQLite CRUD操作代码实例: 1:首先创建一个继承了SQLiteOpenHelper类的MyDatabaseHelper类.实现他的onCreate(SQLiteDatabase db) on ...

  5. iOS 中SQLite数据库操作

    在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...

  6. 安卓SQLite数据库操作,半小时开发新闻管理系统,纯干货

    本教程致力于可以快速的学习安卓软件开发,希望能通过一系列自己手写的教程,帮助正在学习或想要学习安卓开发的同仁. 本教程由今日头条-全栈攻城狮号首发,都是一个字一个字码的.请尊重劳动成果,转载请注明出处 ...

  7. 实验八 sqlite数据库操作

    实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016年5月3日 实验项目名称 SQLite数据库操作 实验地点 S30010 实验类型 □验证型    √设计型    □综合型 ...

  8. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

  9. 【Android】实验8 SQLite数据库操作2016.5.12

    实验8  SQLite数据库操作 [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机 ...

  10. SQLite C++操作类

    为了方便SQLite的使用,封装了一个SQLite的C++类,同时支持ANSI 和UNICODE编码.代码如下:   头文件(SQLite.h) [cpp] view plaincopy /***** ...

随机推荐

  1. MySql中的变量定义(转)

    根据mysql手册,mysql的变量分为两种:系统变量和用户变量.但是在实际使用中,还会遇到诸如局部变量.会话变量等概念.根据个人感觉,mysql变量大体可以分为四种类型: 一.局部变量. 局部变量一 ...

  2. 【结构型】Adapter模式

    Adapter模式主要意图是将类或接口转换成客户期望的接口,从而使得原本不兼容.无法在一起工作的接口可以在一起工作.该模式有两种形式的Adapter法,一是继承方式:二是对象关联依赖方式. 继承方式A ...

  3. php过滤参数特殊字符防注入

    分享一例php实现过滤提交的参数数据以防止注入的代码,有需要的朋友参考下. 本节内容: php过滤特符字符,php防注入. in: 后端程序 例子: 代码示例: <?php /** * 安全防范 ...

  4. JS操作css的float属性的特殊写法

    使用js操作css属性的写法是有一定的规律的: 1.对于没有中划线的css属性一般直接使用style.属性名即可. 如:obj.style.margin,obj.style.width,obj.sty ...

  5. [POJ] 2226 Muddy Fields(二分图最小点覆盖)

    题目地址:http://poj.org/problem?id=2226 二分图的题目关键在于建图.因为“*”的地方只有两种木板覆盖方式:水平或竖直,所以运用这种方式进行二分.首先按行排列,算出每个&q ...

  6. 使用SQLiteDatabase进行数据库操作的步骤

    1.获取SQLiteDatabase对象,它代表了与数据库的连接.2.调用SQLiteDatabase的方法来执行SQL语句.3.操作SQL语句的执行结果,比如用SimpleCursorAdapter ...

  7. Usage、Usage Minimum和Usage Maximum项目详解

    (1)一个产生多个数据域(Report Count>1)的主项目之前有一个以上的[用途]时,每个[用途]与一个数据域依次对应,如果数据域个数(Report Count)超过[用途]的个数,则剩余 ...

  8. 【HDOJ】1057 A New Growth Industry

    纯粹的模拟题目. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 20 # ...

  9. 【转】android使用File Explorer无法访问系统内部文件--不错

    原文网址:http://blog.csdn.net/yangqicong11/article/details/8747042 设备:Samsung GT-P3110 系统:Android 4.1.1 ...

  10. 小记UNIX编程库调用.

    更好的文章:http://www.cppblog.com/deane/articles/165216.html 静态库生成:(举例加法库) 1.编程源程序 add.h add.c 2.编译源程序,生成 ...