sqlite3增删查改应用

简介:

创建一个数据库(包括int 类型的id,string 类型的name),并对其进行增删改查

实现步骤:

1.创建一个SingleViewApplication应用。

    sqlite3数据库可以采用MesaSQLite可视化工具

2.添加sqlite3支持的库文件,libsqlite3.dylib

3.创建viewController控制器,布局好界面


ViewController.h:

#import <UIKit/UIKit.h>  @interface ViewController : UIViewController - (IBAction)addClick:(id)sender; - (IBAction)deleteClick:(id)sender; - (IBAction)updateClick:(id)sender; - (IBAction)selectClick:(id)sender; @property (retain, nonatomic) IBOutlet UITextField *idText; @property (retain, nonatomic) IBOutlet UITextField *nameText; - (IBAction)viewClick:(id)sender; @property (retain, nonatomic) IBOutlet UISearchBar *txtSearchBar;  @end

ViewController.m:

#import "ViewController.h" #import <sqlite3.h> #define kFilename @"Homeworkdb.rdb"  @interface ViewController ()  @end  @implementation ViewController  - (void)viewDidLoad {     [super viewDidLoad]; 	 }  - (void)didReceiveMemoryWarning {     [super didReceiveMemoryWarning];     // Dispose of any resources that can be recreated. }  -(NSString *)dataFilePath {     NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);     NSString * document = [path objectAtIndex:0];     return [document stringByAppendingPathComponent:kFilename]; }  //增加 - (IBAction)addClick:(id)sender {     //创建     sqlite3 * database;     if(sqlite3_open([[self dataFilePath] UTF8String], &database)!=SQLITE_OK)     {         sqlite3_close(database);         NSAssert(0, @"Failed to open database");     }          NSString * creataSQL = @"CREATE TABLE IF NOT EXISTS FIELDS" "(id INTEGER PRIMARY KEY,name TEXT);";     char * errorMsg;     if(sqlite3_exec(database, [creataSQL UTF8String], NULL, NULL, &errorMsg)!=SQLITE_OK)     {         sqlite3_close(database);         NSAssert(0, @"Error creating table:%s",errorMsg);     }              char * update = "insert or replace into FIELDS (id, name)" "values (?,?);";     sqlite3_stmt * stmt;     if(sqlite3_prepare_v2(database, update, -1, &stmt, nil) == SQLITE_OK)     {         sqlite3_bind_int(stmt, 1, [self.idText.text intValue]);   //1表示第一个问号         sqlite3_bind_text(stmt, 2, [self.nameText.text UTF8String], -1, NULL);//2表示第二个问号     }     if(sqlite3_step(stmt)!=SQLITE_DONE)     {         NSAssert(0, @"Error updating table:%s",errorMsg);     }     sqlite3_finalize(stmt);      //这句话不能漏          sqlite3_close(database);   //关闭数据库          UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"友情提示" message:@"添加成功" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];     [a show]; }  //删除 - (IBAction)deleteClick:(id)sender {     sqlite3 * database;     if(sqlite3_open([[self dataFilePath] UTF8String], &database)!=SQLITE_OK)     {         sqlite3_close(database);         NSAssert(0, @"Failed to open database");     }          NSString * creataSQL = @"CREATE TABLE IF NOT EXISTS FIELDS" "(id INTEGER PRIMARY KEY,name TEXT);";     char * errorMsg;     if(sqlite3_exec(database, [creataSQL UTF8String], NULL, NULL, &errorMsg)!=SQLITE_OK)     {         sqlite3_close(database);         NSAssert(0, @"Error creating table:%s",errorMsg);     }                   char * del = "delete from FIELDS where id = ?;";         sqlite3_stmt * stmt;         if(sqlite3_prepare_v2(database, del, -1, &stmt, nil) == SQLITE_OK)         {             sqlite3_bind_int(stmt, 1, [self.idText.text intValue]);   //1表示第一个问号         }         if(sqlite3_step(stmt)!=SQLITE_DONE)         {             NSAssert(0, @"Error delete table:%s",errorMsg);         }         sqlite3_finalize(stmt);                sqlite3_close(database);          UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"友情提示" message:@"删除成功" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];     [a show]; }  //修改 - (IBAction)updateClick:(id)sender {     sqlite3 * database;     if(sqlite3_open([[self dataFilePath] UTF8String], &database)!=SQLITE_OK)     {         sqlite3_close(database);         NSAssert(0, @"Failed to open database");     }          NSString * creataSQL = @"CREATE TABLE IF NOT EXISTS FIELDS" "(id INTEGER PRIMARY KEY,name TEXT);";     char * errorMsg;     if(sqlite3_exec(database, [creataSQL UTF8String], NULL, NULL, &errorMsg)!=SQLITE_OK)     {         sqlite3_close(database);         NSAssert(0, @"Error creating table:%s",errorMsg);     }          char * update = "update FIELDS set id = ?,name = ? where id = ?";     sqlite3_stmt * stmt;     if(sqlite3_prepare_v2(database, update, -1, &stmt, nil) == SQLITE_OK)     {         sqlite3_bind_int(stmt, 1, [self.idText.text intValue]);   //1表示第一个问号         sqlite3_bind_text(stmt, 2, [self.nameText.text UTF8String], -1, NULL);//2表示第二个问号         sqlite3_bind_int(stmt, 3, [self.idText.text intValue]);     }     if(sqlite3_step(stmt)!=SQLITE_DONE)     {         NSAssert(0, @"Error updating table:%s",errorMsg);     }     sqlite3_finalize(stmt);      //这句话不能漏          sqlite3_close(database);   //关闭数据库          UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"友情提示" message:@"修改成功" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];     [a show]; }  //查询 - (IBAction)selectClick:(id)sender {     //创建数据库     sqlite3 * database;     if(sqlite3_open([[self dataFilePath] UTF8String], &database)!=SQLITE_OK)     {         sqlite3_close(database);         NSAssert(0, @"Failed to open database");     }          NSString * creataSQL = @"CREATE TABLE IF NOT EXISTS FIELDS" "(id INTEGER PRIMARY KEY,name TEXT);";     char * errorMsg;     if(sqlite3_exec(database, [creataSQL UTF8String], NULL, NULL, &errorMsg)!=SQLITE_OK)     {         sqlite3_close(database);         NSAssert(0, @"Error creating table:%s",errorMsg);     }          NSString * query = @"select * from FIELDS where id = ?";     sqlite3_stmt * statement;     if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil) == SQLITE_OK)     {         sqlite3_bind_int(statement, 1, [self.txtSearchBar.text intValue]);         //sqlite3_bind_text(statement, 2, [self.nameText.text UTF8String], -1, NULL);         while(sqlite3_step(statement) == SQLITE_ROW)         {             int id = sqlite3_column_int(statement, 0);    //0表示第1列             char * name = (char *)sqlite3_column_text(statement, 1);  //1表示第2列                          NSString * sid = [[NSString alloc] initWithFormat:@"%d",id];             NSString * sname = [[NSString alloc] initWithUTF8String:name];             self.nameText.text = sname;             self.idText.text = sid;             UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"友情提示" message:@"查询成功" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];             [a show];         }                  sqlite3_finalize(statement);     }     else     {         NSLog(@"error");     }           sqlite3_close(database); }    - (void)dealloc {     [_idText release];     [_nameText release];     [_txtSearchBar release];     [super dealloc]; } - (IBAction)viewClick:(id)sender {     [self.idText resignFirstResponder];     [self.nameText resignFirstResponder]; } @end



















本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366418 ,如需转载请自行联系原作者
相关文章
|
4月前
|
存储 关系型数据库 MySQL
SQLite的应用场景有哪些?
【8月更文挑战第21天】SQLite的应用场景有哪些?
226 3
|
7月前
|
存储 关系型数据库 数据库
利用Python与SQLite构建轻量级数据库应用
在当今日益增长的数据处理需求下,数据库成为存储、检索和管理数据的关键技术。然而,对于小型项目或快速原型开发,大型数据库系统可能显得过于庞大和复杂。本文将介绍如何利用Python编程语言与SQLite轻量级数据库,快速搭建一个功能齐全、易于维护的数据库应用。我们将探讨SQLite数据库的特点、Python对SQLite的支持,并通过一个实际案例展示如何构建一个简单的数据库应用,为读者提供一种高效、灵活的解决方案。
|
7月前
|
SQL Dart 数据库
Flutter笔记: 在Flutter应用中使用SQLite数据库
Flutter笔记: 在Flutter应用中使用SQLite数据库
986 0
|
7月前
|
SQL 关系型数据库 MySQL
mysql转sqlite3实战+部署sqlite3应用
mysql转sqlite3实战+部署sqlite3应用
465 0
|
数据库 Android开发 数据库管理
【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
780 0
【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
|
存储 SQL 关系型数据库
sqlite3——基本命令语句与应用
sqlite3——基本命令语句与应用
433 0
sqlite3——基本命令语句与应用
|
SQL 数据库 数据库管理
sqlite3——sqlite3应用相关函数
sqlite3——sqlite3应用相关函数
278 0
|
数据库 Android开发 数据库管理
Android开发当中SQLite数据库的应用
这个应该算是小型数据库了。 我在DJANGO开发中已不怎么用它啦。
8872 0
|
数据库 图形学 数据库管理
下一篇
无影云桌面