Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

          //database operation

          打開數據庫 

           

          -(BOOL) opendatabase{

           

          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

          NSString *documentsDirectory = [paths objectAtIndex:0];

          NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sql"];

          NSFileManager *fileManager = [NSFileManager defaultManager];

          BOOL find = [fileManager fileExistsAtPath:path];

          //找到數據庫文件mydb.sql

          if (find) {

                   NSLog(@"Database file have already existed.");

                   if(sqlite3_open([path UTF8String], &database_) != SQLITE_OK) {

                   sqlite3_close(database_);

                   NSLog(@"Error: open database file.");

                   return NO;

                  }

                   return YES;

          }

          if(sqlite3_open([path UTF8String], &database_) == SQLITE_OK) {

          //bFirstCreate_ = YES;

                  [self createChannelsTable:database_];//在后面實現函數createChannelsTable

                   return YES;

          } else {

                  sqlite3_close(database_);

                  NSLog(@"Error: open database file.");

                  return NO;

          }

          return NO;

          }

           

          創建表

           

          - (BOOL) createChannelsTable:(sqlite3*)db{

          char *sql = "CREATE TABLE reports (id integer primary key,stime  text,stitle text,scal   text,sruntime text)";

          sqlite3_stmt *statement;

          if(sqlite3_prepare_v2(db, sql, -1, &statement, nil) != SQLITE_OK) {

                   NSLog(@"Error: failed to prepare statement:create reports table");

                   return NO;

          }

          int success = sqlite3_step(statement);

          sqlite3_finalize(statement);

          if ( success != SQLITE_DONE) {

                  NSLog(@"Error: failed to dehydrate:CREATE TABLE reports");

                  return NO;

          }

          NSLog(@"Create table 'reports' successed.");

          return YES;

          }

           

          插入表 

           

          - (BOOL)insertOneChannel:(NSString*)stime mytitle:(NSString*)stitle mycal:(NSString*)scal myruntime:(NSString*)sruntime

          {

           

          sqlite3_stmt *statement;

          static char *sql = "INSERT INTO reports (id,stime,stitle,scal,sruntime) VALUES(NULL,?,?,?,?)";

          //問號的個數要和(cid,title,imageData,imageLen)里面字段的個數匹配,代表未知的值,將在下面將值和字段關聯。

          int success = sqlite3_prepare_v2(database_, sql, -1, &statement, NULL);

          if (success != SQLITE_OK) {

                  NSLog(@"Error: failed to insert:channels");

                   return NO;

          }

          //這里的數字1234代表第幾個問號

          //sqlite3_bind_text(statement, 1, stime, -1, SQLITE_TRANSIENT);

          char *p = [stime cStringUsingEncoding:1];

          sqlite3_bind_text(statement, 1, [stime cStringUsingEncoding:1], -1, SQLITE_TRANSIENT);

          sqlite3_bind_text(statement, 2, [stitle cStringUsingEncoding:1], -1, SQLITE_TRANSIENT);

          sqlite3_bind_text(statement, 3, [scal cStringUsingEncoding:1], -1, SQLITE_TRANSIENT);

          sqlite3_bind_text(statement, 4, [sruntime cStringUsingEncoding:1], -1, SQLITE_TRANSIENT);

           

          success = sqlite3_step(statement);

          sqlite3_finalize(statement);

          if (success == SQLITE_ERROR) {

                   NSLog(@"Error: failed to insert into the database with message.");

                  return NO;

          }

          NSLog(@"Insert One Channel#############:id = _");

          return YES;

          }


          查詢表

          - (void) getChannels:(NSMutableArray*)fChannels{

          sqlite3_stmt *statement = nil;

          char *sql = "SELECT * FROM reports";

          if (sqlite3_prepare_v2(database_, sql, -1, &statement, NULL) != SQLITE_OK) {

                  NSLog(@"Error: failed to prepare statement with message:get channels.");

          }

          //查詢結果集中一條一條的遍歷所有的記錄,這里的數字對應的是列值。

          while (sqlite3_step(statement) == SQLITE_ROW) {

                 //char* cid = (char*)sqlite3_column_text(statement, 1);

                 char* stime = (char*)sqlite3_column_text(statement, 1);

                 char* stitle =(char*)sqlite3_column_text(statement, 2);

                 char* scal = (char*)sqlite3_column_text(statement, 3);

                 char* sruntime= (char*)sqlite3_column_text(statement, 4);

           

                 //NSString *tmp = [NSString stringWithCString:stitle encoding:1];

                  myreportitem* ri = [[myreportitem alloc] init];

                 ri.mytime = [NSString stringWithCString:stime encoding:1];

                  ri.mytitle = [NSString stringWithCString:stitle encoding:1];

                  ri.mycal = [NSString stringWithCString:scal encoding:1];

                 ri.myruntime = [NSString stringWithCString:sruntime encoding:1];

           

                 [fChannels addObject:ri];

                 [ri release];

          }

          sqlite3_finalize(statement);

          }

          刪除記錄

          - (void)doClearReport: {

              

          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

          NSString *documentsDirectory = [paths objectAtIndex:0];

          NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sql"];

          NSFileManager *fileManager = [NSFileManager defaultManager];

          BOOL find = [fileManager fileExistsAtPath:path];

          //找到數據庫文件mydb.sql

          if (find) {

                  NSLog(@"Database file have already existed.");

                   if(sqlite3_open([path UTF8String], &database_) != SQLITE_OK) {

                  sqlite3_close(database_);

                  NSLog(@"Error: open database file.");

                  return NO;

                }

                char *sql = "delete from reports";

                 sqlite3_stmt *statement;

                 if(sqlite3_prepare_v2(database_, sql, -1, &statement, nil) != SQLITE_OK) {

                  NSLog(@"Error: failed to prepare statement:create reports table");

                 return NO;

               }

               int success = sqlite3_step(statement);

                sqlite3_finalize(statement);

               if ( success != SQLITE_DONE) {

                NSLog(@"Error: failed to dehydrate:delete TABLE reports");

                return NO;

                }

                NSLog(@"Create table 'reports' successed.");

           

               sqlite3_close(database_);

           

             }

           

          }

          posted on 2010-09-28 11:09 seal 閱讀(336) 評論(0)  編輯  收藏 所屬分類: iPhone
          主站蜘蛛池模板: 宝清县| 深圳市| 隆子县| 应用必备| 红桥区| 丹江口市| 阿勒泰市| 兴安盟| 宜黄县| 三明市| 炎陵县| 黄石市| 雅江县| 汕尾市| 九龙坡区| 澄城县| 广汉市| 上栗县| 方山县| 南宫市| 长治市| 轮台县| 资源县| 钟山县| 高碑店市| 堆龙德庆县| 岐山县| 富阳市| 秦安县| 厦门市| 思南县| 巨鹿县| 开封县| 华池县| 三河市| 大冶市| 仙桃市| 青州市| 永顺县| 江北区| 剑阁县|