简单的数据操作
来源:互联网 发布:高中数学中有算法 编辑:程序博客网 时间:2024/05/21 09:35
数据库
根据id查找所有信息:
插入:
删除:
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
- 简单的数据操作
- Hibernate的简单数据操作
- 数据的简单操作集
- 一个简单的数据操作类
- 一个简单的数据操作类
- Java对Mysql的简单数据操作
- 简单的json数据分页操作
- 数据简单操作测试
- HBase 简单数据操作
- 简单的SQL Server数据库数据读取与数据操作
- 简单的SQLServer数据库数据读取与数据操作
- 一个简单的OleDb数据操作辅助类
- VisualBasic.Net最简单的数据集动操作
- 一个简单的NET数据访问层操作类
- 简单比较Python的数据持久化操作
- Android简单的SQLite操作及ListView展示数据
- Spring对MongoDB的简单集成及数据操作
- pipeExample.c(向管道数据的简单读写操作)
- 冒泡排序和结构体
- [vim] man plugin
- 初探STL容器之deque
- lucene 4.6.0 初学,
- 开发iOS即时通讯工具参考的一些开源、框架和教程
- 简单的数据操作
- MyEclipse8.6 部署 WebLogic10
- 安装网卡驱动
- ubuntu中 安装中文输入法
- Jquery EasyUI 弹出“加载中。。。”效果
- MATLAB 安装使用libsvm详细步骤(附图)
- 黑马程序员-java中类的继承与组合
- css制作圆角按钮
- 输出最大