1. iOS 数据库(1)

#import <Foundation/Foundation.h>
#import <sqlite3.h>
@interface myDB : NSObject
{
    sqlite3 *mySqlite;
}

-(void)openDataBase;
-(void)createTable;
-(void)insertTbale:(NSArray *)array;
-(NSMutableArray *)selectDB;
@end
#import "myDB.h"

@implementation myDB

-(void)openDataBase
{
    NSString *path=[NSHomeDirectory() stringByAppendingFormat:@"/Documents/data.sqlite"];
    
    int result= sqlite3_open([path UTF8String], &mySqlite);
    if (result!= SQLITE_OK) {
        NSLog(@"打开数据失败");
        return;
    }
}
-(void)createTable
{
    [self openDataBase];
    
    NSString *sql=@"CREATE TABLE IF NOT EXISTS abc(usename text PRIMARY KEY ,password text,email text)";
    char *error;
    int result=sqlite3_exec(mySqlite, [sql UTF8String], NULL, NULL, &error);
    if (result != SQLITE_OK) {
        NSLog(@"创建表失败");
        sqlite3_close(mySqlite);
        return;
    }
    
    sqlite3_close(mySqlite);
    


}

-(void)insertTbale:(NSArray *)array
{
    sqlite3_stmt *state;
    //打开数据库
    [self openDataBase];
    
    //sql语句
    NSString *sql=@"INSERT into abc(usename,password,email) VALUES (?,?,?)";
    //编译sql语句
    sqlite3_prepare_v2(mySqlite, [sql UTF8String], -1, &state, NULL);
    NSString  *usename=[array objectAtIndex:0];
    NSString *password=[array objectAtIndex:1];
    NSString  *email=[array objectAtIndex:2];
    
    sqlite3_bind_text(state, 1, [usename UTF8String], -1, NULL);
    sqlite3_bind_text(state, 2, [password UTF8String], -1, NULL);
    sqlite3_bind_text(state, 3, [email UTF8String], -1, NULL);
    
    //执行SQL语句
    int result=sqlite3_step(state);
    if (result==SQLITE_ERROR||result==SQLITE_MISUSE) {
        NSLog(@"执行SQL语句失败");
        return;
    }
    //关闭数据句柄
     sqlite3_finalize(state);
    //关闭数据库
    sqlite3_close(mySqlite);
    NSLog(@"数据插入成功");
   
}

//查询数据
-(NSMutableArray *)selectDB
{
    NSMutableArray *muArray=[NSMutableArray array];
    //打开数据库
    [self openDataBase];
    sqlite3_stmt *statement=nil;
    NSString *sql=@"SELECT usename, password, email FROM abc";
    //编译SQL语言
    int result=sqlite3_prepare_v2(mySqlite, [sql UTF8String], -1, &statement, NULL);
    if (result != SQLITE_OK) {
        NSLog(@"ERROR");
        return 0;
    }
    //查询数据
    result=sqlite3_step(statement);

    while (result==SQLITE_ROW) {
        char *usename=(char *)sqlite3_column_text(statement, 0);
        char *password=(char *)sqlite3_column_text(statement, 1);
        char *email=(char *)sqlite3_column_text(statement, 2);
        NSString *useNameStr=[NSString stringWithCString:usename encoding:NSUTF8StringEncoding];
        NSString *passwordStr=[NSString stringWithCString:password encoding:NSUTF8StringEncoding];
        NSString *emailStr=[NSString stringWithCString:email encoding:NSUTF8StringEncoding];
        NSLog(@"测试:%@,%@,%@",useNameStr,passwordStr,emailStr);
        NSArray *TempArray=@[useNameStr,passwordStr,emailStr];

        [muArray addObject:TempArray];

        result=sqlite3_step(statement);
    }
    
    sqlite3_finalize(statement);
    sqlite3_close(mySqlite);
    
    return muArray;
}
@end


你可能感兴趣的:(1. iOS 数据库(1))