iOS UI 18 数据库
来源:互联网 发布:mac os10.8.5升级10.9 编辑:程序博客网 时间:2024/05/16 07:31
//
// RootViewController.m
// Ui - 18 数据库
//
// Created by dllo on 15/12/2.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import "RootViewController.h"
#import "DataBasehandle.h"
#import "Student.h"
@interface RootViewController ()
@property (retain,nonatomic) IBOutletUIButton *button;
@property (retain,nonatomic) IBOutletUIButton *button1;
@property (retain,nonatomic) IBOutletUIButton *button2;
@property (retain,nonatomic) IBOutletUIButton *button3;
@property (retain,nonatomic) IBOutletUIButton *insert;
@property (retain,nonatomic) IBOutletUIButton *updat;
@property (retain,nonatomic) IBOutletUIButton *deleteda;
@property (retain,nonatomic) IBOutletUIButton *button4;
@property (retain,nonatomic) IBOutletUIButton *button5;
@end
@implementation RootViewController
- (void)viewDidLoad {
[superviewDidLoad];
NSLog(@"%@",NSHomeDirectory());
// Do any additional setup after loading the view from its nib.
}
//打开数据库
- (IBAction)button:(id)sender {
[[DataBasehandlesharedDatabase] openDB];
}
//关闭数据库
- (IBAction)button1:(id)sender {
[[DataBasehandlesharedDatabase] closeDB];
}
//创建表单
- (IBAction)button2:(id)sender {
[[DataBasehandlesharedDatabase] createTable];
}
//删除表单
- (IBAction)button3:(id)sender {
[[DataBasehandlesharedDatabase] deleteTable];
}
//插入数据
- (IBAction)insert:(id)sender {
Student *stu = [[Studentalloc]init];
stu.name = @"dfsa";
stu.sex = @"fdsf";
stu.age = 1;
[[DataBasehandlesharedDatabase] insertDataWithStudent:stu];
}
//修改数据
- (IBAction)updat:(id)sender {
Student *stu = [[Studentalloc]init];
stu.name = @"小平好帅";
stu.sex = @"男";
stu.age = 100;
[[DataBasehandlesharedDatabase] updataWithNumber:4Student:stu];
}
//删除数据
- (IBAction)deleteda:(id)sender {
[[DataBasehandlesharedDatabase] deleteDataWithNumber:2];
}
//查询所有数据
- (IBAction)button4:(id)sender {
NSMutableArray *stuArr = [[DataBasehandlesharedDatabase] selectAllStudent];
for (Student *stuin stuArr) {
NSLog(@"%@ %@ %ld", stu.name, stu.sex, stu.age);
}
}
- (IBAction)button5:(id)sender {
NSMutableArray *stuArr = [[DataBasehandlesharedDatabase]selectBySexOfStudent:@"男"name:@"小平好帅"];
for (Student *stuin stuArr) {
NSLog(@"%@ %@ %ld", stu.name, stu.sex, stu.age);
}
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
- (void)dealloc {
[_button release];
[_button1 release];
[_button2 release];
[_button3 release];
[_insert release];
[_updat release];
[_deleteda release];
[_button4 release];
[_button5 release];
[super dealloc];
}
@end
//
// DataBasehandle.h
// Ui - 18 数据库
//
// Created by dllo on 15/12/2.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
@class Student;
@interface DataBasehandle : NSObject
+(instancetype)sharedDatabase;
- (void)openDB;
- (void)closeDB;
- (void)createTable;
- (void)deleteTable;
- (void)insertDataWithStudent:(Student *)stu;
- (void)deleteDataWithNumber:(NSInteger)num;
- (void)updataWithNumber:(NSInteger)num Student:(Student *)stu;
- (NSMutableArray *)selectAllStudent;
- (NSMutableArray *)selectBySexOfStudent:(NSString *)sex name :(NSString *)name;
@end
//
// DataBasehandle.m
// Ui - 18 数据库
//
// Created by dllo on 15/12/2.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import "DataBasehandle.h"
#import "Student.h"
#import <sqlite3.h>
@implementation DataBasehandle
+(instancetype)sharedDatabase
{
static DataBasehandle *dataBase =nil;
if (nil == dataBase) {
dataBase = [[DataBasehandle alloc]init];
}
return dataBase;
}
static sqlite3 *DB =nil;
//sql指令(以Student举例):
//
//创建表单 : @"CREATE TABLE IF NOT EXISTS student(number integer PRIMARY KEY AUTOINCREMENT, name TEXT, sex TEXT, age integer)"
//
//删除表单 : @"DROP TABLE student"
//
//插入数据 : @"INSERT INTO student(name, sex, age) VALUES ('%@', '%@', '%ld')", stu.name, stu.sex, stu.age
//
//删除数据 : @"DELETE FROM student WHERE number = '%ld'", num
//
//修改数据(按num) : @"UPDATE student SET name = '%@', sex = '%@', age = '%ld' WHERE number = '%ld'", stu.name, stu.sex, stu.age, num
//
//查询所有数据 : SELECT * FROM student
//
//按分类查找(按sex) : @"SELECT * FROM student WHERE sex LIKE '%%%@%%'", sex
- (void)openDB
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)lastObject];
NSString *filepath = [pathstringByAppendingPathComponent:@"dataBase.db"];
//打开数据库
//注意将文件路径转为c语言识别的字符串类型
int ret = sqlite3_open(filepath.UTF8String, &DB);
if (SQLITE_OK == ret) {
NSLog(@"打开数据库成功");
} else {
NSLog(@"打开数据库失败");
}
}
- (void)closeDB
{
int ret =sqlite3_close(DB);
if (SQLITE_OK == ret) {
NSLog(@"关闭数据库成功");
} else {
NSLog(@"关闭数据库失败");
}
}
- (void)createTable
{
NSString *sqlStr =@"CREATE TABLE IF NOT EXISTS student(number integer PRIMARY KEY AUTOINCREMENT, name TEXT, sex TEXT, age integer)";
int ret = sqlite3_exec(DB, sqlStr.UTF8String,NULL, NULL,NULL);
if (SQLITE_OK == ret) {
NSLog(@"创建表单成功");
} else {
NSLog(@"创建表单失败");
}
}
- (void)deleteTable
{
NSString *sqlStr = @"DROP TABLE student";
int ret = sqlite3_exec(DB, sqlStr.UTF8String,NULL, NULL,NULL);
if (SQLITE_OK == ret) {
NSLog(@"删除表单成功");
} else {
NSLog(@"删除表单失败");
}
}
- (void)insertDataWithStudent:(Student *)stu
{
NSString *sqlStr = [NSStringstringWithFormat:@"INSERT INTO student(name, sex, age) VALUES ('%@', '%@', '%ld')", stu.name, stu.sex, stu.age];
int ret = sqlite3_exec(DB, sqlStr.UTF8String,NULL, NULL,NULL);
if (SQLITE_OK == ret) {
NSLog(@"插入数据成功");
} else {
NSLog(@"插入数据失败");
}
}
- (void)deleteDataWithNumber:(NSInteger)num
{
NSString *sqlstr = [NSStringstringWithFormat:@"DELETE FROM student WHERE number = '%ld'", num];
int ret = sqlite3_exec(DB, sqlstr.UTF8String,NULL, NULL,NULL);
if (SQLITE_OK == ret) {
NSLog(@"删除数据成功");
} else {
NSLog(@"删除数据失败");
}
}
- (void)updataWithNumber:(NSInteger)num Student:(Student *)stu
{
NSString *sqlstr = [NSStringstringWithFormat:@"UPDATE student SET name = '%@', sex = '%@', age = '%ld' WHERE number = '%ld'", stu.name, stu.sex, stu.age, num];
int ret = sqlite3_exec(DB, sqlstr.UTF8String,NULL, NULL,NULL);
if (SQLITE_OK == ret) {
NSLog(@"修改数据成功");
} else {
NSLog(@"修改数据失败");
}
}
- (NSMutableArray *)selectAllStudent
{
NSString *sqlstr =@"SELECT * FROM student";
sqlite3_stmt *stmt = nil;
int ret = sqlite3_prepare_v2(DB, sqlstr.UTF8String, -1, &stmt,NULL);
if (SQLITE_OK == ret) {
NSMutableArray *arr = [NSMutableArrayarray];
//判断是否还有有效数据
while (SQLITE_ROW ==sqlite3_step(stmt)) {
//参数:列数
const unsignedchar *name = sqlite3_column_text(stmt, 1);
const unsigned char *sex = sqlite3_column_text(stmt, 2);
sqlite3_int64 age =sqlite3_column_int(stmt, 3);
Student *stu = [[Studentalloc]init];
// stu.name = name;
stu.name = [NSStringstringWithUTF8String:(constchar *)name];
stu.sex = [NSStringstringWithUTF8String:(constchar *)sex];
//整型可以直接强转
stu.age = (NSInteger)age;
[arr addObject:stu];
[stu release];
}
return arr;
} else {
NSLog(@"获取数据失败");
return nil;
}
}
- (NSMutableArray *)selectBySexOfStudent:(NSString *)sex name:(NSString *)name
{
NSString *sqlstr = [NSStringstringWithFormat: @"SELECT * FROM student WHERE sex LIKE '%%%@%%' and name = '%@'", sex, name ];
sqlite3_stmt *stmt = nil;
int ret = sqlite3_prepare_v2(DB, sqlstr.UTF8String, -1, &stmt,NULL);
if (SQLITE_OK == ret) {
NSMutableArray *arr = [NSMutableArrayarray];
//判断是否还有有效数据
while (SQLITE_ROW ==sqlite3_step(stmt)) {
//参数:列数
const unsigned char *name = sqlite3_column_text(stmt, 1);
const unsigned char *sex = sqlite3_column_text(stmt, 2);
sqlite3_int64 age =sqlite3_column_int(stmt, 3);
Student *stu = [[Studentalloc]init];
// stu.name = name;
stu.name = [NSStringstringWithUTF8String:(constchar *)name];
stu.sex = [NSStringstringWithUTF8String:(constchar *)sex];
//整型可以直接强转
stu.age = (NSInteger)age;
[arr addObject:stu];
[stu release];
}
return arr;
} else {
NSLog(@"获取数据失败");
return nil;
}
}
@end
//
// Student.h
// Ui - 18 数据库
//
// Created by dllo on 15/12/2.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Student : NSObject
@property (nonatomic,copy)NSString *name;
@property (nonatomic,copy)NSString *sex;
@property (nonatomic,assign)NSInteger age;
@end
//
// Student.m
// Ui - 18 数据库
//
// Created by dllo on 15/12/2.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import "Student.h"
@implementation Student
- (void)dealloc
{
[_name release];
[_sex release];
[super dealloc];
}
@end
- iOS UI 18 数据库
- iOS开发 UI高级 SQLite数据库
- **原创**零基础学ios**UI课程03***数据库
- ios UI
- ios UI
- iOS UI
- UI数据库
- UI数据库
- UI数据库
- iOS UI 18 uicollectionview和自定义cell
- UI day 18 数据库SQL语句
- ios UI数据库 sqlite小型数据库的增、删、改、查、排序
- ios UI数据库 sqlite小型数据库的增、删、改、查、排序
- UI一揽子计划 19 (数据库管理系统、SQL语句、iOS 的数据库实现技术)
- ios UI数据库 sqlite小型数据库的增、删、改、查、排序
- iOS: UI 开发
- IOS UI设计参考
- IOS UI编程细节
- 对KLT,主成分分析(PCA)算法的理解
- ExpendableListActivity控件的使用
- Git使用
- 提取行间事件
- LeetCode OJ——Merge Two Sorted Lists
- iOS UI 18 数据库
- 数据储存
- IOS安装FFmpeg调用成功总结的一些问题
- Gartner对微服务的解读,比较全面
- windbg基本知识和常用命令
- android混淆打包、反编译、重新打包签名
- 第八周项目3-顺序串算法(1)
- js中获取事件对象的方法小结
- iOS UI 18 uicollectionview和自定义cell