#import <Foundation/Foundation.h>

@class student;

@interface DataBaseHandle : NSObject

//设置单例

+(DataBaseHandle *)shareDB;

//获取沙盒document路径

-(NSString *)documentPath;

//打开数据库

-(void)openDB;

//关闭数据库

-(void)closeDB;

//创建表

-(void)createTable;

//插入信息

-(void)insertStudent:(student *)stu;

//修改信息

-(void)updateMessage;

//删除信息

-(void)deleteMessage;

//查找全部

-(void)selectAllStudent;

//条件查找(按性别查找)

-(void)selectwithSex:(NSString *)sex;

*****************************************************

#import "DataBaseHandle.h"

#import <sqlite3.h>

#import "student.h"

//全局单例对象

static DataBaseHandle *database=nil;

@implementation DataBaseHandle

#pragma mark  实现单例

+(DataBaseHandle *)shareDB

{

if (nil==database) {

database=[[DataBaseHandle alloc] init];

}

return database;

}

//获取document路径

-(NSString *)documentPath

{

return NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

}

//使用数据库步骤

//1.在操作数据库之前引入框架

//2.声明一个数据库对象

static sqlite3 *db=nil;

//打开数据库

-(void)openDB

{

if (nil==db) {

//拼接数据库存放路径

NSString *dbPath=[[self documentPath] stringByAppendingString:@"/student.sqlite"];

//根据路径打开数据库

//如果该路径下没有数据库,就自动创建一个

//打开数据库

int result= sqlite3_open(dbPath.UTF8String,&db);

//判断师傅成功

if (result==SQLITE_OK) {

NSLog(@"打开成功");

}

else

{

NSLog(@"打开失败");

}

}

}

#pragma mark 创建表

-(void)createTable

{

//要创建表就要使用SQl语句

///SQL语句在这十一字符串形式存在的

NSString *createString=@"CREATE TABLE   IF NOT EXISTS student (sid INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , sname TEXT, ssex TEXT, sage TEXT)";

//执行SQL语句

int result=sqlite3_exec(db, createString.UTF8String, NULL, NULL, NULL);

if (result==SQLITE_OK) {

NSLog(@"创建成功");

}

else

{

NSLog(@"创建失败");

}

}

#pragma mark 插入信息

-(void)insertStudent:(student *)stu

{

//准备插入语句

NSString *insertString=[NSString stringWithFormat:@"INSERT INTO student (sname,ssex,sage) VALUES ('%@','%@','%@')",stu.name,stu.sex,stu.age];

//执行语句

int result=sqlite3_exec(db, insertString.UTF8String, NULL, NULL, NULL);

if (result==SQLITE_OK) {

NSLog(@"插入成功");

}

else

{

NSLog(@"插入失败");

}

}

#pragma mark 修改数据

-(void)updateMessage

{

NSString *updateString=@"UPDATE student SET sid = '1' WHERE  sid = 6";

int result=sqlite3_exec(db, updateString.UTF8String, NULL, NULL, NULL);

if (result==SQLITE_OK) {

NSLog(@"修改成功");

}

else

{

NSLog(@"修改失败");

}

}

#pragma mark 删除数据

-(void)deleteMessage

{

NSString *deleteString=@"delete from student where sid=5";

int result=sqlite3_exec(db, deleteString.UTF8String, NULL, NULL, NULL);

if (result==SQLITE_OK) {

NSLog(@"删除成功");

}

else

{

NSLog(@"删除失败");

}

}

#pragma  mark 查找

-(void)selectAllStudent

{

//准备查找语句

NSString *selectAll=@"select * from student";

//创建伴随指针

sqlite3_stmt *stmt=nil;

//预备执行

int result=sqlite3_prepare(db, selectAll.UTF8String, -1, &stmt, NULL);

if (result==SQLITE_OK) {

//在没有查找完之前一直循环执行

while (sqlite3_step(stmt)==SQLITE_ROW) {

//取出sid(第0列)

NSInteger sid=sqlite3_column_int(stmt, 0);

//取出sname(第1列)

NSString *sname=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];

//取出ssex(第2列)

NSString *ssex=[NSString stringWithUTF8String:(const char*)sqlite3_column_text(stmt, 2)];

//取出sage(第3列)

NSString *sage=[NSString stringWithUTF8String:(const char*)sqlite3_column_text(stmt, 3)];

NSLog(@"sid:%d,sname:%@,ssex:%@,sage:%@",sid,sname,ssex,sage);

}

//关闭伴随指针

sqlite3_finalize(stmt);

}

else

{

//结束伴随指针

sqlite3_finalize(stmt);

NSLog(@"查找失败");

}

}

#pragma mark 性别查找

-(void)selectwithSex:(NSString *)sex

{

//准备查找语句

NSString *selectString=@"select * from student where ssex=? ";

//伴随指针

sqlite3_stmt *stmt=nil;

//预执行

int result=sqlite3_prepare(db, selectString.UTF8String, -1, &stmt, nil);

if (result==SQLITE_OK) {

//绑定?的值

//'1'代表第一个?和参数绑定

sqlite3_bind_text(stmt, 1, sex.UTF8String, -1, NULL);

while (sqlite3_step(stmt)==SQLITE_ROW) {

//取出sid(第0列)

NSInteger sid=sqlite3_column_int(stmt, 0);

//取出姓名(第一列)

NSString *sname=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];

//取出性别(第二列)

NSString *ssex=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];

//取出年龄(第三列)

NSString *sage=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 3)];

NSLog(@"sid:%d,sname:%@,ssex:%@,sage:%@",sid,sname,ssex,sage);

}

//结束伴随指针

sqlite3_finalize(stmt);

}

else

{

//关闭查询指针

sqlite3_finalize(stmt);

NSLog(@"查询失败");

}

}

数据库sqlite的使用的更多相关文章

  1. Android学习---如何创建数据库,SQLite(onCreate,onUpgrade方法)和SQLiteStudio的使用

    一.android中使用什么数据库? SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程式庫中.它是D.RichardHipp建立的公有领域项目.SQLite 是一个软件库,实现 ...

  2. python 学习笔记6(数据库 sqlite)

    26. SQLite 轻量级的关系型数据库 SQLite是python自带的数据库,可以搭配python存储数据,开发网站等. 标准库中的 sqlite3 提供该数据库的接口. 1. 基本语法如下 c ...

  3. 数据库SQLite在Qt5+VS2012使用规则总结---中文乱码

    VS2012默认格式为 "GB2312-80",而有时我们用到字符串需要显示中文时,就会出现乱码.下面仅就Qt5和VS2012中使用数据库SQLite时,做一个简单的备忘录 #in ...

  4. Python信息采集器使用轻量级关系型数据库SQLite

    1,引言Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.SQLite作为后端数据库,可以搭配Python建网站,或者为python网络爬虫存储数据.SQLite还在其它 ...

  5. (转)轻量级数据库 SQLite

    SQLite Expert – Personal Edition SQLite Expert 提供两个版本,分别是个人版和专业版.其中个人版是免费的,提供了大多数基本的管理功能. SQLite Exp ...

  6. iOS基础 - 数据库-SQLite

    一.iOS应用数据存取的常用方式 XML属性列表 —— PList NSKeyedArchiver 归档 Preference(偏好设置) SQLite3 Core Data(以面向对象的方式操作数据 ...

  7. 数据库-SQLite

    技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong  数据库-SQLite 技术博客http:// ...

  8. [深入浅出iOS库]之数据库 sqlite

    一,sqlite 简介 前面写了一篇博文讲如何在 C# 中使用 ADO 访问各种数据库,在移动开发和嵌入式领域也有一个轻量级的开源关系型数据库-sqlite.它的特点是零配置(无需服务器),单磁盘文件 ...

  9. 数据库sqlite 存储图片

    SQLite可以存储 BLOB(binary large object,二进制大对象)格式数据,利用它可以在安卓应用开发中存储图片资源. 这里先讲下,怎样把数据从数据库中取出,并显示在imagView ...

  10. 数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

随机推荐

  1. 关于hibernate非主键多对一关联

    一直以来,用hibernate做多对一时,关联的都是主键,今天,同事设计的表,关联的却不是主键,这下麻烦了,hibernate的many-to-one默认关联的都是主键,原来,hibernate提供了 ...

  2. nginx和apache的优缺点比较

    简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,也就是两者专注于解决不同的问题.apache httpd:稳定.对动态请求处理强,但同时高并发时性能较弱,耗费资源多 ...

  3. c# List集合排序

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  4. mysql不能链接远程,报(Host '***.***.***.***' is not allowed to connect to this MySQL server)

    Host '***.***.***.***' is not allowed to connect to this MySQL server 其中***...是本机公网ip; 解决办法: 首先看报错窗口 ...

  5. 使用fdisk进行磁盘管理

    http://itercast.com/lecture/17 disk是来自IBM的老牌分区软件,几乎所有Linux系统均默认安装 fdisk是一个MBR分区工具,不可用于GPT分区 只有超级用户(r ...

  6. 在php添加mongo过程中出现的mongo.so: > undefined symbol: php_json_encode in Unknown on line 0. After installation mongo driver for php 的错误

    3 down vote my system is centos 6.3. I got the problem solved. vim /etc/php.ini then add extension=j ...

  7. 计算机与ARM板通过路由器相连

    首先,使用两根网线分别将计算机和ARM板与路由器的LAN口连接. 要想使计算机和ARM板通信,必须使二者在同一网段. 在计算机的终端输入:ifconfig 获取计算机的ip地址,查看eth0,我的ip ...

  8. hdu2095 像水题的不错题 异或运算

    异或运算的基础有点忘记了 先介绍一下..2个数异或 就是对于每一个二进制位进行位运算 具有2个特殊的性质 1.一个数异或本身恒等于0,如5^5恒等于0: 2.一个数异或0恒等于本身,如5^0恒等于5. ...

  9. 使用 Camtasia Recorder显示 “ camtasia an error occurred in the recorder: video codec open failed ”

    这是因为本机没有codec的缘故,可以下载一个:tscc解码器(TechSmith Screen Capture Codec) 2.0.3.0 安装版 http://www.cngr.cn/dir/2 ...

  10. sql 成绩表 case then

    select * from  dbo.tb_Scroe select Name,(select count(*) from tb_Scroe where Name = t.Name and Scroe ...