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. 初识数据字典【weber出品必属精品】

    数据字典结构 有两部分组成: 1. 基表:以$结尾的系统表,在创建数据库的时候,oracle自动创建的表 2. 用户可以访问的视图 数据字典的种类 DICTIONARY:简称DICT,所有的数据字典, ...

  2. js 计算两个日期之间的周数

    //返回两个日期相差的周数 function WeeksBetw(date1, date2) { //这里的date1,date2都是Date对象 var d1 = new Date(date1); ...

  3. IT编程培训,线上线下,孰优孰劣

    现在Java培训机构确实参差不齐,主要有在线培训和线下培训两大类: 1,虚拟和现实的区别:不论视觉,听觉,体验上在线教学都不如线下教学. 2,学费问 题:在线教学由于成本低,不受地域,教学设备限制一般 ...

  4. php的一些小笔记-文件函数(2)

    ---恢复内容开始--- copy 文件的复制 echo copy('test.php','test1.php'); 如果成功的返回true,反之返回false 如何在多层目录中复制文件呢?也就是根据 ...

  5. 丰富的else语句及简洁的with语句 - 零基础入门学习Python034

    丰富的else语句及简洁的with语句 让编程改变世界 Change the world by program 丰富的else语句 有鱼油可能会说,else语句还有啥好讲的?经常跟if语句进行搭配用于 ...

  6. uva201 Squares

     Squares  A children's board game consists of a square array of dots that contains lines connecting ...

  7. Codeforces Round #276 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/485 A题.Factory 模拟.判断是否出现循环,如果出现,肯定不可能. 代码: #include<cstdio> ...

  8. 24C01的IIC 讀寫的c51程式

    /*------------------------------------------------------------------------------ 為了安全起見,程式中很多NOP是冗餘的 ...

  9. Pro Android 4 第六章 构建用户界面以及使用控件(一)

         目前为止,我们已经介绍了android的基础内容,但是还没开始接触用户界面(UI).本章我们将开始探讨用户界面和控件.我们先讨论一下android中UI设计的一般原理,然后我们在介绍一下an ...

  10. VC++ 2013 开发windows窗体程序

    开发工具版本:Visual Studio Express 2013 for Windows Desktop 1. 新建Visual C++下面的"Win32 Project" 2. ...