.h file
#import <sqlite3.h>
@interface RootViewController : UIViewController {
IBOutlet UIView *page1;
IBOutlet UIButton *b2;
IBOutlet UITextField *textid;
IBOutlet UITextField *textname;
IBOutlet UILabel *status;
NSString *databasePath;
NSMutableArray *temparray;
//NSMutableDictionary *item;
//IBOutlet UIButton *btnNextview;
NSString *databaseName;
BOOL isInSwipeDeleteMode;
}
@property (assign) BOOL isInSwipeDeleteMode;
-(void)checkAndCreateDatabase;
-(void)getdata;
-(IBAction)savedata;
-(BOOL)UpdateData;
-(IBAction)find:(id)sender;
-(IBAction)keyhide:(id)sender;
-(IBAction)btnTapped:(id)sender;
- (BOOL) validateEmail: (NSString *) candidate;
-(void)delData:(NSString *)path;
@end
.m file
-(void) checkAndCreateDatabase {
BOOL success;
databaseName = @"namedatabase.rdb";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
NSFileManager *fileManager = [NSFileManager defaultManager];
success = [fileManager fileExistsAtPath:databasePath];
if(success) return;
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
[fileManager release];
}
-(IBAction)save_DB
{
[self checkAndCreateDatabase];
//[self RemoveData];
sqlite3 *database;
static sqlite3_stmt * addStmt ;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
databaseName = @"Photos_db.rdb";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
BOOL success = [fileManager fileExistsAtPath:databasePath];
if(!success)
{
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Photos_db.rdb"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:databasePath error:&error];
if (!success)
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
const char *sql = "insert into photo_table(photo_name,photo_date) Values(?,?)";
if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
sqlite3_bind_text(addStmt, 1, [text_photoname.text UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 2, [text_photodate.text UTF8String], -1, SQLITE_TRANSIENT);
//sqlite3_bind_text(addStmt, 3, [txtplaceDetail.text UTF8String], -1, SQLITE_TRANSIENT);
if (sqlite3_step(addStmt) == SQLITE_DONE)
{
//status.text = @"Contact added";
//text_photoname.text = @"";
//text_photodate.text= @"";
//photo_img.hidden=YES;
}
//phone.text = @"";
//if(SQLITE_DONE != sqlite3_step(addStmt))
// NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
sqlite3_reset(addStmt);
}
else
{
}
sqlite3_close(database);
[self getdata];
}
-(void)getdata
{
[self checkAndCreateDatabase];
sqlite3 *database;
temparray = [[NSMutableArray alloc] init];
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
NSString *sql = [NSString stringWithFormat:@"select * from newtable"];
const char *sqlStatement = [sql UTF8String];
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
NSMutableDictionary *item=[[NSMutableDictionary alloc] init];
//NSMutableArray *item=[[NSMutableArray alloc] init];
[item setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)] forKey:@"eid"];
[item setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)] forKey:@"ename"];
[temparray addObject:item];
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
NSLog(@"%@",temparray);
//NSLog(@"%@",item);
}
-(void)RemoveData
{
sqlite3 *database;
sqlite3_stmt *deleteStmt=nil ;
[self checkAndCreateDatabase];
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
if(deleteStmt == nil) {
const char *sql = "delete from newtable where eid = ?";
if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database));
}
//When binding parameters, index starts from 1 and not zero.
const char* the = [delString UTF8String];
sqlite3_bind_text(deleteStmt, 1, the, -1, SQLITE_TRANSIENT);
if (SQLITE_DONE != sqlite3_step(deleteStmt))
NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database));
sqlite3_reset(deleteStmt);
}
sqlite3_close(database);
}
-(void)UpdateData
{
[self checkAndCreateDatabase];
//sqlite3 *db = [appDelegate database];
sqlite3_stmt *update_statement;
sqlite3 *db;
NSString *sqlStr = [NSString stringWithFormat:@"UPDATE newtable SET ename=\"%@\" WHERE eid=\"%@\" ",txtname.text,txtid.text];
// NSString *sqlStr = [NSString stringWithFormat:@"UPDATE newtable SET ename=? WHERE eid=?"];
//const char *sql = "update Coffee Set CoffeeName = ?, Price = ? Where CoffeeID = ?";
//if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
const char *sql = [sqlStr UTF8String];
if(sqlite3_open([databasePath UTF8String],&db)==SQLITE_OK){
if (sqlite3_prepare_v2(db, sql, -1, &update_statement, NULL) == SQLITE_OK) {
//UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"DatabaseNotAvailable", @"") message:[NSString stringWithUTF8String:sqlite3_errmsg(db)]delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
// [alert show];
// [alert release];
//return NO;
//txtid.text=@"";
//txtname.text=@"";
statusm.text=@"updated";
}
int success = sqlite3_step(update_statement);
if (success == SQLITE_ERROR) {
NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(db));
//return NO;
}
sqlite3_finalize(update_statement);
} //return YES;
}
- (BOOL) validateEmail: (NSString *) candidate {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
// return 0;
return [emailTest evaluateWithObject:candidate];
}
-(IBAction)btnTapped:(id)sender{
if([self validateEmail:textid.text]==1)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:@"You Enter Correct Email id." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
[self savedata];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:@"You Enter Incoorect Email id." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
}
}
??