我有sqlite数据库并且正在将数据检索到另一个tableview中怎么办?并且对如何将数据库值添加到数组以及如何将这些值添加到 tableview 感到震惊?这是我的代码 dbmodelclass.h
#import <UIKit/UIKit.h>
#import <sqlite3.h>
@interface dbModelClass :UIViewController
{
NSMutableDictionary *readDic;
NSMutableArray *readArray;
// sqlite3 *_database;
}
+(NSString *)connectDb;
+(BOOL)createTable;
+(BOOL)createTable3;
+(int)saveData:(NSMutableArray *)data;
+(int)saveData2:(NSMutableArray *)data;
+(NSMutableArray *)getData;
@end
This is my 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];
NSMutableArray *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";
const char *query=[string UTF8String];
if(sqlite3_prepare_v2(dbobj, query, -1, &statement, NULL)==SQLITE_OK)
{
while (sqlite3_step(statement)==SQLITE_ROW)
{
NSMutableDictionary *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:@"password"];
// [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
This is my netviewcontroller.h
#import <UIKit/UIKit.h>
@interface NetViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
{
IBOutlet UILabel *depositLabel,*expenseLabel,*netvalueLabel;
IBOutlet UITextField *netvalueText;
IBOutlet UITableView *depositTable;
}
@property (strong, nonatomic) UINavigationController *navigationController;
@property(strong,nonatomic)UILabel *depositLabel,*expenseLabel,*netvalueLabel;
@property(strong,nonatomic)UITextField *netvalueText;
@property(strong,nonatomic)UITableView *depositTable;
-(IBAction)netvalue:(id)sender;
@end
This is my netviewcontroller.m
#import "NetViewController.h"
#import "dbModelClass.h"
@interface NetViewController ()
@end
@implementation NetViewController
{
NSArray *tableData;
}
@synthesize depositLabel,netvalueLabel,depositTable,netvalueText;
//@synthesize str,depositData,depositArray;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[dbModelClass connectDb];
[dbModelClass getData];
/* depositArray=[[NSMutableArray alloc]init];
depositData=[[NSMutableArray alloc]init];
depositArray=[dbModelClass getData:str];
for( NSDictionary *dis in depositArray)
{
[depositData addObject:[dis objectForKey:@"depositTable"]];
}*/
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)netvalue:(id)sender
{
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [tableData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
return cell;
}
@end