如何在数据库操作中插入update delete,并将数据库保存在文档目录中 [英] How to insert update delete in database operation and also save database in document directory

查看:134
本文介绍了如何在数据库操作中插入update delete,并将数据库保存在文档目录中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要获取数据库并通过查询插入更新删除,因此任何可用于简单操作的类

I need fetch database and insert update delete done via query so any class available for simple operation

 +(void)createEditableCopyOfDatabaseIfNeeded {
    BOOL success;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentDirectory stringByAppendingPathComponent:@"YOUR DB NAME"];
    success = [fileManager fileExistsAtPath:writableDBPath];
    if (success) {
        return;
    }
    NSString *defualtDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YOUR DB NAME"];
    success = [fileManager copyItemAtPath:defualtDBPath toPath:writableDBPath error:&error];

    if (!success) {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"Database Error!!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
}

我需要通过查询完成操作...

I need complete operation via query...

推荐答案

在下面给出的创建文件
在database.h中写这个文件

create file in given below write this in database.h File

    #import <Foundation/Foundation.h>
    #import <sqlite3.h>

    @interface Database : NSObject {
   }
   +(NSString* )getDatabasePath;
   +(NSMutableArray *)executeQuery:(NSString*)str;
   +(NSString*)encodedString:(const unsigned char *)ch;
   +(BOOL)executeScalarQuery:(NSString*)str;
   @end

这将在database.m文件中

and this will in database.m file

   #import "Database.h"
 #import <sqlite3.h>


  @implementation Database

  +(NSString* )getDatabasePath{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"YOURDBNAME"];
return writableDBPath;

    }

  +(NSMutableArray *)executeQuery:(NSString*)str
  {
sqlite3_stmt *statement= nil;
sqlite3 *database;
NSString *strPath = [self getDatabasePath];
NSMutableArray *allDataArray = [[NSMutableArray alloc] init];
if (sqlite3_open([strPath UTF8String],&database) == SQLITE_OK) 
{
    if (sqlite3_prepare_v2(database, [str UTF8String], -1, &statement, NULL) == SQLITE_OK) 
    {
        while (sqlite3_step(statement) == SQLITE_ROW) 
        {
            NSInteger i = 0;
            NSInteger iColumnCount = sqlite3_column_count(statement);
            NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
            while (i< iColumnCount) {
                NSString *str = [self encodedString:(const unsigned char*)sqlite3_column_text(statement, i)];
                NSString *strFieldName = [self encodedString:(const unsigned char*)sqlite3_column_name(statement, i)];
                [dict setObject:str forKey:strFieldName];
                i++;
            }

            [allDataArray addObject:dict];
            [dict release];
        }
    }
    else {
         NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
    }

    sqlite3_finalize(statement);
} 
sqlite3_close(database);
return allDataArray;
  }
  +(BOOL)executeScalarQuery:(NSString*)str{

sqlite3_stmt *statement= nil;
sqlite3 *database;
BOOL fRet = NO;
NSString *strPath = [self getDatabasePath];
if (sqlite3_open([strPath UTF8String],&database) == SQLITE_OK) {
    if (sqlite3_prepare_v2(database, [str UTF8String], -1, &statement, NULL) == SQLITE_OK) {
        if (sqlite3_step(statement) == SQLITE_DONE)
            fRet =YES;
    }

    sqlite3_finalize(statement);
} 
sqlite3_close(database);
return fRet;
   }


   +(NSString*)encodedString:(const unsigned char *)ch
    {
NSString *retStr;
if(ch == nil)
    retStr = @"";
else
    retStr = [NSString stringWithCString:(char*)ch encoding:NSUTF8StringEncoding];
return retStr;
   }

   @end

这篇关于如何在数据库操作中插入update delete,并将数据库保存在文档目录中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆