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];

}

}

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

  1. SQLite3命令操作大全

    SQLite3命令操作大全 SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.本文档提供一个样使用sqlite3的简要说明. 一.ql ...

  2. 通过 C# 代码操作 Google 日历

    原文:通过 C# 代码操作 Google 日历 本文主题 借助 Google .NET APIs Client Library,通过 C# 代码在 Google 日历中创建会议邀请. 本文背景 最近, ...

  3. JavaScript后台代码操作HTML TABLE的方法

    原文:JavaScript后台代码操作HTML TABLE的方法 var rowNum = 0,fileNum = 0; //行号与列号 var oNewRow; //定义插入行对象 var oNew ...

  4. 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

    由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...

  5. python sqlite3 数据库操作

    python sqlite3 数据库操作 SQLite3是python的内置模块,是一款非常小巧的嵌入式开源数据库软件. 1. 导入Python SQLite数据库模块 import sqlite3 ...

  6. Java代码操作HDFS测试类

    1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...

  7. Android开发之使用sqlite3工具操作数据库的两种方式

    使用 sqlite3 工具操作数据库的两种方式 请尊重他人的劳动成果,转载请注明出处:Android开发之使用sqlite3工具操作数据库的两种方式 http://blog.csdn.net/feng ...

  8. 使用java代码操作Redis

    1导入pom.xml依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis ...

  9. java代码操作Redis

    1.导入需要的pom依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn ...

  10. Zookeeper学习笔记(三)——java客户端代码操作

    Zookeeper客户端java代码操作 上篇博客记录了shell命令操作zookeeper集群的方式,这次尝试采用java代码来操作.通过查阅API,发现并不困难. 1. 首先获得客户端与服务器的连 ...

随机推荐

  1. iOS_SN_沙盒文件操作及位置

    转载:http://blog.csdn.net/hello_hwc/article/details/44916909 沙盒的结构如下所示 一 访问Bundle 注意Bundle只读,不能写入 创建一个 ...

  2. JS常用验证方法

    1.验证必须为数字(可有小数点) if(isNaN(value))execCommand('undo') 说明:1.isNaN()方法用于验证value值是否为非法数字,返回值true或者false. ...

  3. JasperReport使用心得

    1. JasperReport 报表文件视图化生成工具iReport. iReport做为一个生成JasperReport的视图工具,和我们是使用的大多数报表创建工具没有太大的差别,都是拖控件,搭出报 ...

  4. Linux下使用多线程模拟异步网络通信

    服务器 /* socket server * 2014-12-15 CopyRight (c) arbboter */ #include <unistd.h> #include <s ...

  5. [Database] Deadlock avoidance protocol

    如何避免Deadlock,如果我们能提前知道各个Process对于资源的需求情况,我们就可以用Banker's algorithm (银行家算法) 来解决问题.可是这在现在中不好实现,因为很难提前知道 ...

  6. jquery简单的拖动效果

    <!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/h ...

  7. PHP数组foreach后使用current取值的问题

    先看如下的代码 $arr=['a','b','c']; foreach ($arr as $v){ echo $v.'<br>'; } var_dump(current($arr)); 今 ...

  8. js 非IE火狐插件检测

    js检测代码Html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...

  9. JQuery基础学习总结

    JQuery基础学习总结 简单总结下JQuery: 一:事件 1.change事件 <!DOCTYPE html> <html lang="en"> < ...

  10. 正式学习react(二)

    今天把上一篇还没学习完的 webpack部分学习完: 之前有说过关于css的webpack使用.我们讲了 ExtractTextPlugin 来单独管理css讲了module.loaders下关于 c ...