Ios 如何将sqlite数据库值添加到数组中,以及如何将这些值添加到tableview中?
我有sqlite数据库,正在将数据检索到另一个tableview中怎么办?我对如何将数据库值添加到数组中以及如何将这些值添加到tableview中印象深刻? 这是我的密码 dbmodelclass.hIos 如何将sqlite数据库值添加到数组中,以及如何将这些值添加到tableview中?,ios,iphone,objective-c,sqlite,Ios,Iphone,Objective C,Sqlite,我有sqlite数据库,正在将数据检索到另一个tableview中怎么办?我对如何将数据库值添加到数组中以及如何将这些值添加到tableview中印象深刻? 这是我的密码 dbmodelclass.h #import <UIKit/UIKit.h> #import <sqlite3.h> @interface dbModelClass :UIViewController { NSMutable
#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
#导入
#进口
@接口dbModelClass:UIViewController
{
NSMutableDictionary*readDic;
NSMutableArray*readArray;
//sqlite3*_数据库;
}
+(NSString*)连接数据库;
+(BOOL)createTable;
+(BOOL)创建表3;
+(int)saveData:(NSMutableArray*)数据;
+(int)saveData2:(NSMutableArray*)数据;
+(NSMutableArray*)获取数据;
@结束
这是我的dbmodelclass.m
#导入“dbModelClass.h”
#导入“expenses.h”
@dbModelClass的实现;
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
如果(自我){
//自定义初始化
}
回归自我;
}
-(无效)未收到记忆警告
{
//如果视图没有superview,则释放该视图。
[超级记忆警告];
//释放所有未使用的缓存数据、图像等。
}
#pragma标记-视图生命周期
-(无效)viewDidLoad
{
[超级视图下载];
//从nib加载视图后,执行任何其他设置。
}
+(NSString*)连接数据库
{
NSArray*docDir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*dbFolder=[docDir objectAtIndex:0];
NSFileManager*manager=[NSFileManager defaultManager];
如果(![manager fileExistsAtPath:dbFolder])
{
[manager createDirectoryAtPath:dbFolder with IntermediateDirectory:YES属性:nil错误:nil];
}
NSString*dbPath=[dbFolder stringByAppendingPathComponent:@“fappDB.sqlite”];
如果(![manager fileExistsAtPath:dbPath])
{
[manager copyItemAtPath:[[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@“fappDB.sqlite”]toPath:dbPath错误:nil];
}
NSLog(@“%@”,dbPath);
返回dbPath;
}
+(BOOL)createTable
{
NSString*dbpath=[dbModelClass connectDb];
sqlite3*dbObj;
if(sqlite3_打开([dbpath UTF8String],&dbObj)=SQLITE_正常)
{
sqlite3_stmt*stmt=nil;
const char*sql=“创建表存款(存款金额VARCHAR,备注VARCHAR)”;
sqlite3\u prepare\u v2(dbObj,sql,-1,&stmt,nil);
如果(sqlite3_步骤(stmt)=SQLITE_完成)
{
NSLog(@“tabel created successfull”);
}
其他的
{
NSLog(@“已创建选项卡”);
}
sqlite3_最终确定(stmt);
sqlite3_关闭(dbObj);
}
返回YES;
}
+(BOOL)创建表3;
{
NSString*dbpath=[dbModelClass connectDb];
sqlite3*dbObj;
if(sqlite3_打开([dbpath UTF8String],&dbObj)=SQLITE_正常)
{
sqlite3_stmt*stmt=nil;
const char*sql=“创建表expense2(费用\u title VARCHAR、description VARCHAR、amount VARCHAR、paidcash VARCHAR、date VARCHAR、备注VARCHAR)”;
sqlite3\u prepare\u v2(dbObj,sql,-1,&stmt,nil);
如果(sqlite3_步骤(stmt)=SQLITE_完成)
{
NSLog(@“tabel created successfull”);
}
其他的
{
NSLog(@“已创建选项卡”);
}
sqlite3_最终确定(stmt);
sqlite3_关闭(dbObj);
}
返回YES;
}
+(int)saveData:(NSMutableArray*)数据
{
sqlite3*dbObj;
sqlite3_stmt*stmt=nil;
NSString*dbPath=[dbModelClass connectDb];
const char*sql=[[NSString stringWithFormat:@“插入存款(存款金额,备注)值(\“%@\”,\“%@\”,[data objectAtIndex:0],[data objectAtIndex:1]]UTF8String];
if(sqlite3_打开([dbPath UTF8String],&dbObj)=SQLITE_正常)
{
sqlite3_bind_text(stmt,1,[[dataobjectatindex:0]UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(stmt,2,[[dataobjectatindex:1]UTF8String],-1,SQLITE_TRANSIENT);
sqlite3\u prepare\u v2(dbObj,sql,-1,&stmt,nil);
如果(sqlite3_步骤(stmt)=SQLITE_完成)
{
NSLog(@“正确执行数据插入stmnt”);
}
其他的
NSLog(@“未执行数据插入stmnt”);
sqlite3_最终确定(stmt);
sqlite3_关闭(dbObj);
}
返回sqlite3\u last\u insert\u rowid(dbObj);
}
+(int)saveData2:(NSMutableArray*)数据
{
sqlite3*dbObj;
sqlite3_stmt*stmt=nil;
NSString*dbPath=[dbModelClass connectDb];
const char*sql=[[NSString stringWithFormat:@“插入支出2(支出标题、说明、金额、paidcash、日期、备注)”值(\“%@\”、\“%@\”、\“%@\”、\“%@\”、“%@\”、“%@\”、“%@\”、[data ObjectIndex:0]、[data ObjectIndex:1]、[data ObjectIndex:2]、[data ObjectIndex:3]、[data ObjectIndex:4]、[data ObjectIndex:5]]UTString];
if(sqlite3_打开([dbPath UTF8String],&dbObj)=SQLITE_正常)
{
sqlite3_bind_text(stmt,1,[[dataobjectatindex:0]UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(stmt,2,[[dataobjectatindex:1]UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(stmt,3,[[dataobjectatindex:2]UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(stmt,4,[[dataobjectatindex:3]UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(stmt,5,[[data objectAtIndex:
- (void)viewDidLoad
{
[super viewDidLoad];
[dbModelClass connectDb];
[dbModelClass getData];
tableData = [dbModelClass getData];
NSLog(@"Content for tableData - %@ ",tableData);
-(void)checkAndCreateDB
{
dataBasePath=[[NSString alloc] initWithString: [NSString stringWithFormat: @"%@/QRCodeDB.sqlite",[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]]];
BOOL success;
NSFileManager *filemanager=[NSFileManager defaultManager];
success=[filemanager fileExistsAtPath:dataBasePath];
if(success){
return;
}
NSString *databasePathFromApp=[[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"QRCodeDB.sqlite"];
[filemanager copyItemAtPath:databasePathFromApp toPath:dataBasePath error:nil];
}
-(void)addNewItemWhereText:(NSString *)text imageData:(NSData *)data dateIs:(NSString *)date
{
[self checkAndCreateDB];
sqlite3_stmt *compiledStmt;
sqlite3 *db;
if(sqlite3_open([dataBasePath UTF8String], &db)==SQLITE_OK){
NSString *insertSQL=@"insert into History(image,text,date) VALUES(?,?,?)";
if(sqlite3_prepare_v2(db,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &compiledStmt, NULL) == SQLITE_OK)
{
sqlite3_bind_blob(compiledStmt, 1, [data bytes], [data length], SQLITE_TRANSIENT);
sqlite3_bind_text(compiledStmt, 2, [text UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(compiledStmt, 3, [date UTF8String], -1, SQLITE_TRANSIENT);
if(sqlite3_step(compiledStmt) != SQLITE_DONE ) {
NSLog( @"Error: %s", sqlite3_errmsg(db) );
} else {
NSLog( @"Insert into row id = %lld", (sqlite3_last_insert_rowid(db)));
}
sqlite3_finalize(compiledStmt);
}
}
sqlite3_close(db);
}
-(UIImage *)giveMeImageWhereDateIs:(NSString *)date
{
[self checkAndCreateDB];
UIImage *imageIs;
sqlite3_stmt *compiledStmt;
sqlite3 *db;
if(sqlite3_open([dataBasePath UTF8String], &db)==SQLITE_OK){
NSString *insertSQL = [NSString stringWithFormat:@"Select image from History Where date = '%@'",date];
if(sqlite3_prepare_v2(db,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &compiledStmt, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStmt) == SQLITE_ROW) {
int length = sqlite3_column_bytes(compiledStmt, 0);
NSData *imageData = [NSData dataWithBytes:sqlite3_column_blob(compiledStmt, 0) length:length];
imageIs=[UIImage imageWithData:imageData];
NSLog(@"Length : %d", [imageData length]);
}
}
sqlite3_finalize(compiledStmt);
}
sqlite3_close(db);
return imageIs;
}
-(NSArray *)giveMeAllDataInTable
{
NSMutableArray *tableDataArray=[[NSMutableArray alloc]init];
[self checkAndCreateDB];
sqlite3_stmt *compiledStmt;
sqlite3 *db;
if(sqlite3_open([dataBasePath UTF8String], &db)==SQLITE_OK){
NSString *insertSQL = [NSString stringWithFormat:@"Select * from History"];
if(sqlite3_prepare_v2(db,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &compiledStmt, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStmt) == SQLITE_ROW)
{
NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
// int length = sqlite3_column_bytes(compiledStmt, 0);
// NSData *imageData = [NSData dataWithBytes:sqlite3_column_blob(compiledStmt, 0) length:length];
[dict setObject:[NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStmt, 1)] forKey:@"text"];
[dict setObject:[NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStmt, 2)] forKey:@"date"];
[tableDataArray addObject:dict];
}
}
sqlite3_finalize(compiledStmt);
}
sqlite3_close(db);
return tableDataArray;
}