0

私はIOSの初心者です。データベースに預金テーブルと経費テーブルがあります。預金テーブルから預金額のみを取得し、経費テーブルから経費額を2つのテーブルビューに取得したいのですが、1つは預金額テーブルビュー用で、もう1つは経費額用です単一画面のテーブルビュー。以下は、この中の私の dbmodelclass.h です

#import <UIKit/UIKit.h>
#import <sqlite3.h>
@interface dbModelClass : UIViewController
{
    NSMutableDictionary *readDic;
    NSMutableArray *readArray;
}
+(NSString *)connectDb;
+(BOOL)createTable;
+(BOOL)createTable3;
+(int)saveData:(NSMutableArray *)data;
+(int)saveData2:(NSMutableArray *)data;
+(NSMutableArray *)getData;
@end

これは私のdbmodelclass.m

#import "dbModelClass.h"
#import "Expences.h"
@implementation dbModelClass;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
   self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
   if (self)
   {
      // Custom initialization
   }
   return self;
}

- (void)didReceiveMemoryWarning
{
   // Releases the view if it doesn't have a superview.
   [super didReceiveMemoryWarning];

   // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
   [super viewDidLoad];
   // Do any additional setup after loading the view from its nib.
}
+(NSString *)connectDb
{
   NSArray *docDir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,          NSUserDomainMask, YES);
   NSString *dbFolder=[docDir objectAtIndex:0];
   NSFileManager *manager=[NSFileManager defaultManager];
   if (![manager fileExistsAtPath:dbFolder])
   {
       [manager createDirectoryAtPath:dbFolder withIntermediateDirectories:YES attributes:nil error:nil];
   }
   NSString *dbPath=[dbFolder stringByAppendingPathComponent:@"fappDB.sqlite"];
   if (![manager fileExistsAtPath:dbPath])
   {
       [manager copyItemAtPath:[[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"fappDB.sqlite"] toPath:dbPath  error:nil];
   }
   NSLog(@"%@",dbPath);
   return dbPath;
}

+(BOOL)createTable
{
   NSString *dbpath=[dbModelClass connectDb];
   sqlite3 *dbObj;
   if (sqlite3_open([dbpath UTF8String], &dbObj)==SQLITE_OK)
   {
      sqlite3_stmt *stmt=nil;
      const char *sql="create table deposit(deposit_amount VARCHAR,remarks VARCHAR)";
      sqlite3_prepare_v2(dbObj, sql, -1, &stmt, nil);
      if (sqlite3_step(stmt)==SQLITE_DONE)
      {
          NSLog(@"tabel created successfull");
      }
      else
      {
         NSLog(@"tabel already created");
      }
      sqlite3_finalize(stmt);
      sqlite3_close(dbObj);
   }   
   return YES;
} 
+(BOOL)createTable3;
{
   NSString *dbpath=[dbModelClass connectDb];
   sqlite3 *dbObj;
   if (sqlite3_open([dbpath UTF8String], &dbObj)==SQLITE_OK)
   {
       sqlite3_stmt *stmt=nil;
       const char *sql="create table expense2(expense_title VARCHAR,description VARCHAR,amount VARCHAR,paidcash VARCHAR,date VARCHAR,remarks VARCHAR)";
       sqlite3_prepare_v2(dbObj, sql, -1, &stmt, nil);
       if (sqlite3_step(stmt)==SQLITE_DONE)
       {
           NSLog(@"tabel created successfull");
       }
       else
       {
           NSLog(@"tabel already created");
       }
       sqlite3_finalize(stmt);
       sqlite3_close(dbObj);
    }
    return YES;
}

+(int)saveData:(NSMutableArray *)data
{
sqlite3 *dbObj;
sqlite3_stmt *stmt=nil;
NSString *dbPath=[dbModelClass connectDb];
const char *sql=[[NSString stringWithFormat:@"insert into deposit(deposit_amount,remarks) values(\"%@\",\"%@\")",[data objectAtIndex:0],[data objectAtIndex:1]]UTF8String];

if (sqlite3_open([dbPath UTF8String], &dbObj)==SQLITE_OK)
{
    sqlite3_bind_text(stmt, 1, [[data objectAtIndex:0]UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(stmt, 2, [[data objectAtIndex:1]UTF8String], -1, SQLITE_TRANSIENT);


    sqlite3_prepare_v2(dbObj, sql, -1, &stmt, nil);
    if (sqlite3_step(stmt)==SQLITE_DONE)
    {
      NSLog(@"data insertion stmnt executed properly");
       }
       else
          NSLog(@"data insertion stmnt not executed");

          sqlite3_finalize(stmt);
           sqlite3_close(dbObj);

  }
return sqlite3_last_insert_rowid(dbObj);
} 

+(int)saveData2:(NSMutableArray *)data
{
sqlite3 *dbObj;
sqlite3_stmt *stmt=nil;
NSString *dbPath=[dbModelClass connectDb];
const char *sql=[[NSString stringWithFormat:@"insert into expense2(expense_title,description,amount,paidcash,date,remarks) values(\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\")",[data objectAtIndex:0],[data objectAtIndex:1],[data objectAtIndex:2],[data objectAtIndex:3],[data objectAtIndex:4],[data objectAtIndex:5]]UTF8String];

if (sqlite3_open([dbPath UTF8String], &dbObj)==SQLITE_OK)
{
    sqlite3_bind_text(stmt, 1, [[data objectAtIndex:0]UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(stmt, 2, [[data objectAtIndex:1]UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(stmt, 3, [[data objectAtIndex:2]UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(stmt, 4, [[data objectAtIndex:3]UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(stmt, 5, [[data objectAtIndex:4]UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(stmt, 6, [[data objectAtIndex:5]UTF8String], -1, SQLITE_TRANSIENT);

    sqlite3_prepare_v2(dbObj, sql, -1, &stmt, nil);
    if (sqlite3_step(stmt)==SQLITE_DONE)
    {
        NSLog(@"data insertion stmnt executed properly");
    }
    else
        NSLog(@"data insertion stmnt not executed");

    sqlite3_finalize(stmt);
    sqlite3_close(dbObj);

 }
return sqlite3_last_insert_rowid(dbObj);
}
-(NSMutableArray *)getData
{
sqlite3 *dbobj;
NSString *dbpath  =[dbModelClass connectDb];
readArray=[[NSMutableArray alloc]init];
if(sqlite3_open([dbpath UTF8String], &dbobj)==SQLITE_OK)
{
    sqlite3_stmt *statement=nil;

    //**** NSString *string=@"SELECT name FROM emptable";
    NSString *string=@"SELECT *FROM deposit WHERE deposit_amount";
    const char *query=[string UTF8String];
    if(sqlite3_prepare_v2(dbobj, query, -1, &statement, NULL)==SQLITE_OK)
    {
        while (sqlite3_step(statement)==SQLITE_ROW)
        {
    readDic=[[NSMutableDictionary alloc] init];

            [readDic setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)] forKey:@"deposit_amount"];
            // NSString *aName=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
            // NSString *pwd=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];
            //[readDic setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)] forKey:@"remarks"];
            //  [readArray addObject:aName];
            // [readArray1 addObject:pwd];
            [readArray addObject:readDic];
            // NSLog(@"%@",readDic);
        }
    }
    sqlite3_finalize(statement);
}
NSLog(@"%@",readArray);
sqlite3_close(dbobj);
return readArray;
}



 - (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

これは私のnetviewcontroller.h

#import <UIKit/UIKit.h>

@interface NetViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>//DepositTable *depositCo
{
IBOutlet  UILabel *depositLabel,*expenseLabel,*netvalueLabel;
IBOutlet  UITextField *netvalueText;
IBOutlet UITableView *depositTable,*expenseTable;


}
@property (strong, nonatomic) UINavigationController *navigationController;
@property(strong,nonatomic)UILabel  *depositLabel,*expenseLabel,*netvalueLabel;
@property(strong,nonatomic)UITextField *netvalueText;
@property(strong,nonatomic)UITableView *depositTable,*expenseTable;



-(IBAction)netvalue:(id)sender;

@end

これは私のnetviewcontroller.m

#import "NetViewController.h"
#import "dbModelClass.h"
@interface NetViewController ()

@end

@implementation NetViewController
@synthesize depositLabel,expenseLabel,netvalueLabel,depositTable,expenseTable,netvalueText;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[dbModelClass connectDb];
[dbModelClass getData];
NSMutableArray *issuesArray = [[NSMutableArray alloc]init];  [dbModelClass financeappDB:@"SELECT * FROM  deposit" resultsArray:issuesArray];
NSLog(@"contents count:%d",[issuesArray count]);

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)netvalue:(id)sender
{

}
@end

私を助けてください

4

2 に答える 2