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. silverlight 生成图表 WCF 解析XML代码.svc.cs 文件

    silverlight 调用wcf 文件代码 private ListItem AnalyzeXML(string XMLCode, string Reportdate, string ChartNa ...

  2. CUICatalog: Invalid asset name supplied:

    [UIImage imageNamed:name];但是这个name却是空的,所以就报了这个错了. 解决方法,在项目中搜索UIImage imageNamed:,然后打印看看所谓的name是否为空.找 ...

  3. C#this的五种用法

    this的五种用法: 1.使用被掩盖的成员变量: class AA { int a; public void set1(int a) { this.a = a;//right } public voi ...

  4. C#窗体嵌套

    1.思路:在一个面板上显示或者隐藏不同窗体 private void button1_Click(object sender, EventArgs e) { chuangti at = new chu ...

  5. vc2015编译protobuf

    下载地址:https://github.com/google/protobuf 1.编译通过cmake生成sln文件来编译用cmd命令 cd 到3.0.0-beta-4\cmake mkdir bui ...

  6. java基础知识再学习--HashMap与ConcurrentHashMap的区别

    引用:http://blog.csdn.net/xuefeng0707/article/details/40834595 从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是 ...

  7. jquery的uploadify上传jsp+servlet

    1.准备材料:下载jquery.uploadify上传js   注意:这个上传在firefox下会出现问题如果你在项目中加了拦截器,因为session会丢失,所以你可以传参的时候带上你所需要的条件,在 ...

  8. Asp.net mvc 3 file uploads using the fileapi

    Asp.net mvc 3 file uploads using the fileapi I was recently given the task of adding upload progress ...

  9. python文件_批量改名

    #! /usr/bin/env python #coding=gbk #文件操作实例--将文件夹下所有图片名称加上'_test' import re,os,time #str.split(path) ...

  10. AngularJS中的控制器示例_2

    <!doctype html> <html ng-app="myApp"> <head> <script src="C:\\Us ...