sqlite3增删查改应用

简介: 创建一个数据库(包括int 类型的id,string 类型的name),并对其进行增删改查 实现步骤: 1.创建一个SingleViewApplication应用。

创建一个数据库(包括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




相关文章
|
6月前
|
数据库 数据库管理
sqlite3 插入数据
sqlite3 插入数据
|
2月前
|
SQL Java 关系型数据库
MySQL数据库基础:增删查改
本文详细介绍了数据库中常用数据类型的使用方法及其在Java中的对应类型,并演示了如何创建表、插入数据、查询数据(包括全列查询、指定列查询、去重查询、排序查询、条件查询和分页查询)、修改数据以及删除数据。此外,还特别强调了处理NULL值时的注意事项,以及在执行修改和删除操作时应谨慎使用条件语句,以避免误操作导致的数据丢失。
74 14
MySQL数据库基础:增删查改
|
3月前
|
SQL Java 数据库连接
SQLite3使用笔记(2)——插入
SQLite3使用笔记(2)——插入
64 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL基本操作——增删查改
MySQL基本操作——增删查改
36 2
|
6月前
|
SQL 存储 数据库连接
C#SQL Server数据库基本操作(增、删、改、查)
C#SQL Server数据库基本操作(增、删、改、查)
216 0
|
6月前
|
关系型数据库 MySQL 数据库
『 MySQL数据库 』表的增删查改(CRUD)之表的数据插入及基本查询(上)
『 MySQL数据库 』表的增删查改(CRUD)之表的数据插入及基本查询(上)
|
存储 SQL 数据库连接
SQLite数据库实现数据增删改查
当前文章介绍的设计的主要功能是利用 SQLite 数据库实现宠物投喂器上传数据的存储,并且支持数据的增删改查操作。其中,宠物投喂器上传的数据包括投喂间隔时间、水温、剩余重量等参数。 实现功能: 创建 SQLite 数据库表,用于存储宠物投喂器上传的数据。 实现对数据库表中数据的插入操作,即将从宠物投喂器接收到的数据存储到数据库中。 实现对数据库表中数据的查询操作,包括按照投喂间隔时间、水温、剩余重量等参数进行筛选,以便用户能够查看特定范围内的数据信息。 实现对数据库表中数据的修改操作,即可以修改已经存储的宠物投喂器上传的数据。 实现对数据库表中数据的删除操作,即可以删除已经存储的宠
127 0
|
人工智能 测试技术 Python
Python实现sqlite3增删改查的封装
Python实现sqlite3增删改查的封装
|
SQL 安全 关系型数据库
MySQL中表的增删查改操作(CRUD)
MySQL中表的增删查改操作(CRUD)
117 0
MySQL中表的增删查改操作(CRUD)
|
存储 缓存 前端开发
IndexDB实现一个本地数据库的增删查改
在客户端,我们所接触到的绝大部分本地缓存方案主要有localStorage以及sessionStorage,其实Storage除了这两大高频api,另外还有IndexDB、cookies、WebSQL,Trust Token(信任令牌),cookies相对来说在前端接触比另外几个多点
504 0
IndexDB实现一个本地数据库的增删查改