Sealyu

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
          <2010年9月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(14)

          隨筆分類

          隨筆檔案

          友情鏈接

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          //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;

          }

          //這里的數字1,2,34代表第幾個問號

          //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 閱讀(328) 評論(0)  編輯  收藏 所屬分類: iPhone
          主站蜘蛛池模板: 岳池县| 涟水县| 河北区| 阳东县| 永胜县| 阳朔县| 朝阳区| 奉贤区| 松桃| 青州市| 莎车县| 从化市| 巫溪县| 武定县| 乌拉特前旗| 浦县| 尼木县| 丽江市| 吴堡县| 河北省| 石泉县| 泸溪县| 修武县| 万全县| 新宾| 孟津县| 永和县| 曲水县| 黄浦区| 新绛县| 资阳市| 仙游县| 宣汉县| 锡林郭勒盟| 张北县| 巴彦县| 余庆县| 江达县| 竹北市| 精河县| 东海县|