简单的数据操作

来源:互联网 发布:高中数学中有算法 编辑:程序博客网 时间:2024/05/21 09:35
数据库
1、以一定的方式存储在一起
2、能为多个用户共享
3、具有尽可能小的冗余度
4、与程序之间彼此独立的数据集合
数据库模型
1、层次结构模型
2、网状结构模型
3、关系结构模型

关系数据库
插入命令:
INser INTO Demo_Table(‘demo_id’,’demo_name’)VALUES(1,’xiaoxiao’);
更新(修改)命令
update …set…… where ………关键字
UPDATE Demo_Table SET demo_name WHERE demo_id = 1;
删除命令:
DELETE FROM Demo_Table WHERE demo_id=1;
查询命令:
selecte *from demo_table where demo_id = 1;
外键:表与表之间一一对应,且不重复的叫做外键
sqlite3基础知识
终端创建数据库
sqlite3 + 数据库名称(自己想要什么写什么)
创建数据库表
create + 表名(列名)

sqlite是轻型数据库,是遵守ACID的关系数据库管理系统,他的设计目标是嵌入式的,占用资源低。
使用SQLite步骤:
1.获取libsqlite库文件
2.引入头文件
3..定义静态的数据库指针
#import <Foundation/Foundation.h>#import <sqlite3.h>//2.引入sqlite3头文件//3.定义静态的数据库指针
.static sqlite3 *dbPoint = nil;@interface SqlDB : NSObject+(sqlite3 *)openDB;@end


sqlite 的方法

sqlite3          *db, 数据库句柄,跟文件句柄FILE很类似

sqlite3_stmt      *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句
sqlite3_open(),   打开数据库,没有数据库时创建。
sqlite3_exec(),   执行非查询的sql语句
Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。
Sqlite3_close(), 关闭数据库文件
还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(), 取text类型的数据。
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(), 取int类型的数据

下面给大家演示下我自己写的增删改查:

打开数据库:

#import "SqlDB.h"@implementation SqlDB+(sqlite3 *)openDB{    //如果数据库存在,就直接返回,不用在走下面的代码了。    if (dbPoint) {        return dbPoint;    }    //Document路径    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];    path = [NSString stringWithFormat:@"%@/db",path];    NSLog(@"\npath ==== %@",path);    //判断数据库是否存在,若存在就不拷贝,反之拷贝。    if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {        //获得将要拷贝的文件路径,bundle路径        NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"DataBase" ofType:@"sqlite"];        NSLog(@"\nsourcePath === %@",sourcePath);        NSError *error = nil;        [[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:path error:&error];        if (error) {            NSLog(@"error ====  %@",error);        }    }    //创建数据库的指针对象    sqlite3_open([path UTF8String], &dbPoint);    return dbPoint;}@end
我为增删改查写了类
<pre name="code" class="objc">#import <Foundation/Foundation.h>@class SqlModel;@interface NovelDataBase : NSObject+(NSArray *)selectAllNovel;+ (SqlModel *)selectWithId:(NSInteger)num;+ (void)insertWithModel:(SqlModel *)model;+ (void)updateWithModel:(NSInteger)num bookName:(NSString *)name;+ (void)deleteWithModel:(NSInteger)num;@end


查询数据库某一张表所有信息:
<pre name="code" class="objc">+(NSArray *)selectAllNovel{    NSMutableArray *results = [NSMutableArray array];    sqlite3 *db = [SqlDB openDB];//获得数据库指针    sqlite3_stmt *stmt = nil;//创建一个数据库的替身    //数据库查询语句    NSString *sqlStr = [NSString stringWithFormat:@"select nv_id,nv_author,nv_bookName,nv_score from Novel"];    //替身放我数据库得到的结果    //检验你的sql语句是否正确    //通过sql语句进行查询,并且将查询结果赋值给替身    int result = sqlite3_prepare_v2(db, [sqlStr UTF8String], -1, &stmt, NULL);    //判断查询结果是否正确,如果result的值是SQLITE_OK,则表明准备好statement,接下来执行查询:    if (result == SQLITE_OK) {        //while循环把数据一条一条取出来        while (sqlite3_step(stmt) == SQLITE_ROW) {            //区第一列的数据,第一个参数是替身,第二个参数是对应sql语句列            int nid = sqlite3_column_int(stmt, 0);            const unsigned char *nauthor = sqlite3_column_text(stmt, 1);            const unsigned char *nbooName = sqlite3_column_text(stmt, 2);            float nscore = sqlite3_column_double(stmt, 3);            NSString *bookName = [NSString stringWithUTF8String:(const char *)nbooName];            NSString *author = [NSString stringWithUTF8String:(const char *)nauthor];            SqlModel *model = [SqlModel sqlModelNId:nid NBookName:bookName NAuthor:author NScore:nscore];            [results addObject:model];        }    }    //在返回数组执勤我们要把替身干掉。    sqlite3_finalize(stmt);    return results;}

根据id查找所有信息:
<pre name="code" class="objc">+ (SqlModel *)selectWithId:(NSInteger)num{    //NSMutableArray *results = [NSMutableArray array];    sqlite3 *db = [SqlDB openDB];    sqlite3_stmt *stmt = nil;    NSString *sqlStr = [NSString stringWithFormat:@"select nv_id,nv_author,nv_bookName,nv_score from Novel where nv_id=%d",num];    int result = sqlite3_prepare(db, [sqlStr UTF8String], -1, &stmt, NULL);    if (result == SQLITE_OK) {        if (sqlite3_step(stmt) == SQLITE_ROW) {            NSInteger nid = sqlite3_column_int(stmt, 0);            const unsigned char *nauthor = sqlite3_column_text(stmt, 1);            const unsigned char *nbooName = sqlite3_column_text(stmt, 2);            float nscore = sqlite3_column_double(stmt, 3);            NSString *bookName = [NSString stringWithUTF8String:(const char *)nbooName];            NSString *author = [NSString stringWithUTF8String:(const char *)nauthor];            SqlModel *model = [SqlModel sqlModelNId:nid NBookName:bookName NAuthor:author NScore:nscore];            //[results addObject:model];            return model;        }    }    sqlite3_finalize(stmt);    return nil;}

插入:
#pragma mark insert+ (void)insertWithModel:(SqlModel *)model{    sqlite3 *db = [SqlDB openDB];    //sqlite3_stmt *stmt = nil;    NSString *sqlStr = [NSString stringWithFormat:@"insert into Novel (nv_id,nv_author,nv_bookName,nv_score)values(%d,'%@','%@',%f)",model.nId,model.nAuthor,model.nBookName,model.nScore];    int result = sqlite3_exec(db, [sqlStr UTF8String], NULL, NULL, NULL);    if (result == SQLITE_OK) {        NSLog(@"Success");    }}
修改或更新:
<pre name="code" class="objc">#pragma mark update+ (void)updateWithModel:(NSInteger)num bookName:(NSString *)name{    sqlite3 *db = [SqlDB openDB];    //sqlite3_stmt *stmt = nil;    NSString *sqlStr = [NSString stringWithFormat:@"update Novel set nv_bookName='%@' where nv_id = %d",name,num];    int result = sqlite3_exec(db, [sqlStr UTF8String], NULL, NULL, NULL);    if (result == SQLITE_OK) {        NSLog(@"Update Success");    }}

删除:
<pre name="code" class="objc">#pragma mark delete+ (void)deleteWithModel:(NSInteger)num {    sqlite3 *db = [SqlDB openDB];    //sqlite3_stmt *stmt = nil;    NSString *sqlStr = [NSString stringWithFormat:@"delete from Novel where nv_id=%d",num];    int result = sqlite3_exec(db, [sqlStr UTF8String], NULL, NULL, NULL);    if (result == SQLITE_OK) {        NSLog(@"Delete Success");    }    }



0 0
原创粉丝点击