UI-MySQL
来源:互联网 发布:linux u盘挂载位置 编辑:程序博客网 时间:2024/05/16 13:46
什么是数据库
以一定方式储存在一起;
能为多个用户共享;
具有尽可能小得冗余度;
与程序彼此独立的数据集合;
常见数据库
SQL
My SQL
Oracle
以一定方式储存在一起;
能为多个用户共享;
具有尽可能小得冗余度;
与程序彼此独立的数据集合;
层次结构模型
网状结构模型
关系结构模型
关系数据库:
数据插入命令(Insert)
数据更新命令(Update)
数据删除命令(Delete)
数据检索命令(Select)
INSERT INTO `Demo_Table`(`demo_id`, `demo_name`) VALUES (1,'xiaohao');
insert into …… values ……———关键字
Demo_Table—————————表名
demo_id和demo_name—————表中的字段名称
1和’xiaohao’——————————要插入的数据
UPDATE `Demo_Table` SET `demo_name` = 'yangyang' WHERE `demo_id`=1;
update …… set ……where……———关键字
Demo_Table—————————表名
demo_id和demo_name—————表中的字段名称
’yangyang’——————————要更新的数据内容
1—————————————— 要更新的数据检索条件
DELETE FROM `Demo_Table` WHERE `demo_id`=1;
delete from ……where……———关键字
Demo_Table—————————表名
demo_id—————表中的字段名称
1—————————————— 要删除的数据检索条件
SELECT * FROM `Demo_Table` WHERE `demo_id`=1;//*号代表所有内容
select from ……where……———关键字
Demo_Table—————————表名
demo_id—————表中的字段名称
1—————————————— 要查询的数据检索条件
打开终端,创建数据库
Last login: Tue Jul 8 10:33:37 on ttys000
mickey:~ me865$ sqlite3 DataBase//创建DataBase命名的文件
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> ;
sqlite> create table Novel (nid int,author text,bookname text,type text);//创建table表,里面有一个以Novel命名的数据库
sqlite> .table//进入table。
Novel//里面有一个名为Novel的数据库
sqlite> insert into Novel (nid ,author,bookname,type) values(1,'天婵土豆','都破 苍穹','玄’);//增加数据
sqlite> select * from Novel;//查询整个数据库
1|天婵土豆|都破苍穹|玄
sqlite> .table
Novel
sqlite> insert into Novel (nid,author,bookname,type) values(2,'天下霸唱','鬼吹灯','玄幻’);//增加一条数据
sqlite> select *from Novel;//查询整个数据库
1|天婵土豆|都破苍穹|玄
2|天下霸唱|鬼吹灯|玄幻
sqlite> select *from Novel where nid=2;//查询id为2的数据
2|天下霸唱|鬼吹灯|玄幻
sqlite> update Novel set bookname= '乡村爱情' where nid=1;//更新数据,讲id=1的bookName改为乡村爱情
sqlite> select *from Novel where nid=1;//查询id=1的数据
1|天婵土豆|乡村爱情|玄
sqlite> delete from Novel where nid=1;//删除id= 1的数据
sqlite> select * from Novel;//查询整个数据库
2|天下霸唱|鬼吹灯|玄幻
sqlite>
新建工程
- 创建一个继承于NSObject的类 : DataBaseHandler
DataBaseHandler.h中
{
sqlite3 * dbPoint;//指针指向的是本地数据库文件
}
//作为一个数据处理的类,其对象最好为一个单例
+ (DataBaseHandler *)shareInstance;
//开启数据库
- (void)openDB;
//关闭数据库
- (void)closeDB;
//创建表
- (BOOL)creatTable;
//插入数据
- (BOOL)insertTableWithName:(NSString *)name age:(int)age number:(int)number;
//删除数据
- (BOOL)deleteTableWithName:(NSString *)name;
//更新数据
- (BOOL)updateName:(NSString *)scorceName toName:(NSString *)targetName;
//查询数据
- (NSArray *)selectTable;
DataBaseHandler.m
+ (DataBaseHandler *)shareInstance
{
staticDataBaseHandler * handler =nil;
//保证线程安全的情况下进行一次
staticdispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
handler = [[DataBaseHandleralloc]init];
//第一次执行的时候打开数据库 创建单例
[handleropenDB];
});
return handler;
}
#warning //开启数据库
- (void)openDB
{
//1.拼接一个数据库文件的地址
NSArray * arrPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
//沙盒中的documents文件夹
NSString * documentPath = [arrPathlastObject];
NSLog(@"%@",documentPath);
//拼接处地址
NSString * dbPointPath = [documentPathstringByAppendingPathComponent:@"lanou.db"];
NSLog(@"%@",dbPointPath);
//参数1:数据库的文件路径
//参数2: sqlite3指针的地址 &dbPoint 属性
//[dbPointPath UTF8String] 将NSString转成const char *类型
int result =sqlite3_open([dbPointPathUTF8String], &dbPoint);
//对数据库结果进行判断
if (result ==SQLITE_OK) {
NSLog(@"打开成功");
}
else
{
NSLog(@"打开失败");
}
}
- (void)closeDB
{
int result =sqlite3_close(dbPoint);
if (result ==SQLITE_OK) {
NSLog(@"关闭数据库成功");
}else
{
NSLog(@"关闭数据库失败");
}
}
- (BOOL)creatTable
{
//注意两个单引号
NSString * sqlStr = [NSStringstringWithFormat:@"create table Student (name text,age int,number int primary key)"];
char * error =nil;
int result =sqlite3_exec(dbPoint, [sqlStrUTF8String],NULL,NULL, &error);
if (result ==SQLITE_DONE) {
returnYES;
}
returnNO;
//1.数据库的替身缓冲地带 确保更新完成之后会自动的更新数据库
//作用 :存储所有对数据库的修改
sqlite3_stmt * stmt =nil;
//2.检查SQL语句,为执行sql语句做的准备
//参数1:数据库指针
//参数2:SQL语句 不需要@直接双引号里面填写
//参数3:限制sql语句的长度不想限制长度写 -1
//参数4:数据库替身stmt的地址
int result = sqlite3_prepare(dbPoint,"create table Student (name text,age int,number int primary key)", -1, &stmt, nil);
//3.判断检查的结果
if (result ==SQLITE_OK) {
//4.执行sql语句
int sqlResult =sqlite3_step(stmt);
//判断sqlResult
if (sqlResult ==SQLITE_DONE ) {
//stmt 数据保存到数据库指针释放掉
sqlite3_finalize(stmt);
returnYES;
}
}
//如果检查sql语句失败,将stmt指针释放掉
sqlite3_finalize(stmt);
return NO;
}
#warning //插入
- (BOOL)insertTableWithName:(NSString *)name age:(int)age number:(int)number
{
//注意两个单引号
NSString * sqlStr = [NSStringstringWithFormat:@"insert into Student values ('%@',%d,%d)",name,age,number];
char * error =nil;
int result =sqlite3_exec(dbPoint, [sqlStrUTF8String],NULL,NULL, &error);
if (result ==SQLITE_DONE) {
returnYES;
}
returnNO;
//1.替身
sqlite3_stmt * stmt =nil;
//注意NULL
int result = sqlite3_prepare(dbPoint,"insert into Student values (?,?,?)", -1, &stmt,NULL);
//3.给问号 ?绑定参数和数据
//参数1 :替身
//参数2 :给哪个位置的 ?绑定 第一个元素为1
//参数3:提供的数据
sqlite3_bind_text(stmt,1, [nameUTF8String], -1,NULL);
sqlite3_bind_int(stmt,2, age);
sqlite3_bind_int(stmt,3, number);
//4.sql检查无误
if (result ==SQLITE_OK) {
//5.执行
if (sqlite3_step(stmt) ==SQLITE_DONE) {
//6.释放
sqlite3_finalize(stmt);
returnYES;
}
}
sqlite3_finalize(stmt);
returnNO;
}
#warning //更新
- (BOOL)updateName:(NSString *)scorceName toName:(NSString *)targetName
{
//注意两个单引号
NSString * sqlStr = [NSStringstringWithFormat:@"update Student set name = '%@' where name = '%@'",scorceName,targetName];
char * error =nil;
int result =sqlite3_exec(dbPoint, [sqlStrUTF8String],NULL,NULL, &error);
if (result ==SQLITE_DONE) {
returnYES;
}
returnNO;
//1.替身
sqlite3_stmt * stmt =nil;
//注意NULL
int result = sqlite3_prepare(dbPoint,"update Student set name = ? where name = ?", -1, &stmt,NULL);
//3.给问号 ?绑定参数和数据
//参数1 :替身
//参数2 :给哪个位置的 ?绑定 第一个元素为1
//参数3:提供的数据
sqlite3_bind_text(stmt,1, [scorceNameUTF8String], -1,NULL);
sqlite3_bind_text(stmt,2, [targetNameUTF8String], -1,NULL);
//4.sql检查无误
if (result ==SQLITE_OK) {
//5.执行
if (sqlite3_step(stmt) ==SQLITE_DONE) {
//6.释放
sqlite3_finalize(stmt);
returnYES;
}
}
sqlite3_finalize(stmt);
returnNO;
}
#warning删除 改进 除了查询之外的方法都可以简化
- (BOOL)deleteTableWithName:(NSString *)name
{
//注意两个单引号
NSString * sqlStr = [NSStringstringWithFormat:@"delete from Student where name = '%@'",name];
char * error =nil;
int result =sqlite3_exec(dbPoint, [sqlStrUTF8String],NULL,NULL, &error);
if (result ==SQLITE_DONE) {
returnYES;
}
returnNO;
#warning 原来的复杂算法
sqlite3_stmt * stmt =nil;
int result = sqlite3_prepare(dbPoint,"delete from Student where name = ?", -1, &stmt,NULL);
sqlite3_bind_text(stmt,1, [nameUTF8String ], -1,NULL);
//4.Sql检查无误
if (result ==SQLITE_OK) {
//5.执行
if (sqlite3_step(stmt) ==SQLITE_DONE) {
//6.保存/释放
sqlite3_finalize(stmt);
returnYES;
}
}
sqlite3_finalize(stmt);
returnNO;
}
#warning //查询 显示所有的
- (NSArray *)selectTable
{
sqlite3_stmt * stmt =nil;
int result =sqlite3_prepare(dbPoint,"select * from Student", -1, &stmt,NULL);
if (result ==SQLITE_OK) {
//数组用来存储结果
NSMutableArray * arr = [NSMutableArrayarray];
while (sqlite3_step(stmt) ==SQLITE_ROW)
{
//获取每行的数据
constunsignedchar * nameChar =sqlite3_column_text(stmt,0);
NSString * name = [NSStringstringWithUTF8String:(constchar *)nameChar];//产生第一条数据
int age = sqlite3_column_int(stmt,1);
int number =sqlite3_column_int(stmt,2);
NSString * str = [NSStringstringWithFormat:@"姓名:%@,年龄: %d,学号: %d",name,age,number];
NSLog(@"%@",str);
[arraddObject:str];
}
sqlite3_finalize(stmt);
return arr;
}
sqlite3_finalize(stmt);
return [NSMutableArrayarray];
}
- UI-MySQL
- RCP编程:MySql 简易UI
- UI
- UI
- UI
- UI
- ui
- UI
- UI
- ui
- ui
- ui
- Ui
- UI
- ui
- UI
- UI
- Ui
- vlc for iOS 编译
- Mongo散记--安装&聚合(aggregation)& 查询(Query)
- vs2010插入分隔符在MFC中
- IOS UIScrollView
- 财哥面京东dm的经历【帮财哥发的】
- UI-MySQL
- C语言泛型编程技术(linux,mysql广泛应用)
- C语言程序编写
- clear方法会把整个map清空吗?
- POJ 3278 Catch That Cow 搜索
- 初探STL容器之List
- Java 注释技巧
- session的生命周期
- 2014-07-09 日志