Note that there are some explanatory texts on larger screens.

plurals
  1. POChange value of selected field from SQlite3 using Xcode
    primarykey
    data
    text
    <p>The purpose when I select a row from a tableView, having data loaded from sqlite, to be capable of changing the value of a certain field. Manipulating through two views, the first one loads the entire database into a mutable array, and when I press a certain field, I go to another view. In this second view, I have a button. How to obtain the result of when pressing this button the field in the database will change value.</p> <p>TableviewController know as AuthorVC.m</p> <pre><code>#import "AuthorVC.h" #import "Author.h" #import &lt;sqlite3.h&gt; #import "SearchVC.h" //#import "DetailViewController.h" #import "Details.h" @implementation AuthorVC @synthesize theauthors; @synthesize author; NSString *authorNAme; NSString *authorNAme2; - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; 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 { searchBar.delegate = (id)self; [self authorList]; [super viewDidLoad]; } - (void)viewDidUnload { [searchBar release]; searchBar = nil; [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } -(void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)text { if(text.length == 0) { isFiltered = FALSE; } else { isFiltered = true; filteredTableData = [[NSMutableArray alloc] init]; for (Author* author in theauthors) { //[NSPredicate predicateWithFormat:@"SELECT * from books where title LIKE %@", searchBar.text]; NSRange nameRange = [author.name rangeOfString:text options:NSAnchoredSearch]; NSRange descriptionRange = [author.genre rangeOfString:text options:NSAnchoredSearch]; if(nameRange.location != NSNotFound || descriptionRange.location != NSNotFound) { [filteredTableData addObject:author]; } } } [self.tableView reloadData]; } /* -(void) showDetailsForIndexPath:(NSIndexPath*)indexPath { NSLog(@"This is the showDetailsForIndexPath"); [self-&gt;searchBar resignFirstResponder]; Details* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Details"]; AuthorVC* author; if(isFiltered) { author = [filteredTableData objectAtIndex:indexPath.row]; } else { author = [theauthors objectAtIndex:indexPath.row]; } vc.author = author; [self.navigationController pushViewController:vc animated:true]; NSLog(author); } */ #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { int rowCount; if(self-&gt;isFiltered) rowCount = filteredTableData.count; else rowCount = theauthors.count; return rowCount; // Return the number of rows in the section. //return [self.theauthors count]; } /* - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ // NSString *Title; // Author *auth = (Author*)segue.destinationViewController; Details *dv = (Details*)segue.destinationViewController; dv.labelText.text = author.title; NSLog(@"Did Enter prepareForSegue"); // labelText.text = @"Hy"; } */ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"This is the one in authorVc"); static NSString *CellIdentifier = @"AuthorsCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } int rowCount = indexPath.row; Author *author = [self.theauthors objectAtIndex:rowCount]; if(isFiltered){ author = [filteredTableData objectAtIndex:indexPath.row]; // UIAlertView *messageAlert = [[UIAlertView alloc] // initWithTitle:@"Filtered" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; // // [messageAlert show]; } else{ author = [theauthors objectAtIndex:indexPath.row]; // UIAlertView *messageAlert = [[UIAlertView alloc] // initWithTitle:@"Not filtered" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; // // [messageAlert show]; } cell.textLabel.text = author.name; // cell.detailTextLabel.text = author.genre; //NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",author.name] autorelease]; return cell; } -(NSMutableArray *) authorList{ theauthors = [[NSMutableArray alloc] initWithCapacity:1000000]; NSMutableArray * new2 = [[NSMutableArray alloc ] initWithCapacity:100000]; // authorNAme = theauthors.sortedArrayHint.description; @try { NSFileManager *fileMgr = [NSFileManager defaultManager]; NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; BOOL success = [fileMgr fileExistsAtPath:dbPath]; if(!success) { NSLog(@"Cannot locate database file '%@'.", dbPath); } if(!(sqlite3_open([dbPath UTF8String], &amp;db) == SQLITE_OK)) { NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); } // const char *sql = "SELECT F_Keyword FROM wordss"; const char *sql = "SELECT * FROM Sheet1"; sqlite3_stmt *sqlStatement; if(sqlite3_prepare(db, sql, -1, &amp;sqlStatement, NULL) != SQLITE_OK) { NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); }else{ while (sqlite3_step(sqlStatement)==SQLITE_ROW) { Author * author = [[Author alloc] init]; //NSString *authorName = author.name; author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; author.title = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,4)]; author.genre = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 6)]; new2 = author.genre; // NSLog(new2); authorNAme=author.genre; //NSLog(author.genre); [theauthors addObject:author]; } // authorNAme = author.genre; } } @catch (NSException *exception) { NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); } @finally { // sqlite3_finalize(sqlStatement);. // authorNAme = nil; sqlite3_close(db); // authorNAme = Nil; return theauthors; } } - (void)dealloc { [searchBar release]; [super dealloc]; //[authorNAme release]; } //- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // // /* // When a row is selected, the segue creates the detail view controller as the destination. // Set the detail view controller's detail item to the item associated with the selected row. // */ // if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) { // // NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow]; // Details *detailViewController = [segue destinationViewController]; // detailViewController.author = [dataController objectInListAtIndex:selectedRowIndex.row]; // } //} - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"This is the showDetailsForIndexPath"); [self-&gt;searchBar resignFirstResponder]; Details* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Details"]; AuthorVC* author; if(isFiltered) { author = [filteredTableData objectAtIndex:indexPath.row]; } else { author = [theauthors objectAtIndex:indexPath.row]; } vc.author = author; authorNAme = vc.author.genre; authorNAme2 = vc.author.name ; NSLog(@"This is the details %@",vc.author.genre); NSLog(@"This is the authorNAme Variable %@" , authorNAme); vc.labelText.text = vc.author.genre; vc.text2.text = vc.author.name; NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",indexPath.row] autorelease]; UIAlertView *messageAlert = [[UIAlertView alloc] initWithTitle:@"Row Selected" message:authorNAme2 delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [messageAlert show]; [self.navigationController pushViewController:vc animated:true]; /* //Get the selected country NSString *selectedAuthors = [theauthors objectAtIndex:indexPath.row]; //NSLog(selectedAuthors); UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; Details *dvController = [storyboard instantiateViewControllerWithIdentifier:@"Details"]; //Or whatever identifier you have defined in your storyboard //authorNAme = selectedAuthors.description; //Initialize the detail view controller and display it. //Details *dvController = [[Details alloc] init/*WithNibName:@"Details" bundle:nil*///]; /* dvController.selectedAuthors = selectedAuthors; NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",indexPath.row] autorelease]; UIAlertView *messageAlert = [[UIAlertView alloc] initWithTitle:@"Row Selected" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [messageAlert show];*/ // NSString *elem = [new2 objectAtIndex:0]; //NSLog(dvController.labelText.text); // NSString *titleString = [[[NSString alloc] initWithFormat:@"Author title : %d",indexPath.row] autorelease]; // NSString *titleString2 = [[new2 objectAtIndex:indexPath.row] autorelease]; // NSLog(@"this is the selected row , %s",titleString2); // authorNAme = titleString; /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! BReak point of SQL Query!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ /* @try { NSFileManager *fileMgr2 = [NSFileManager defaultManager]; // NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"dictionary.sqlite"]; //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"authorsDb2.sqlite"]; // NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"FinalDb.sqlite"]; //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"xxJuridique-FINAL-OK.sqlite"]; NSString *dbPath2 = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; BOOL success = [fileMgr2 fileExistsAtPath:dbPath2]; if(!success) { NSLog(@"Cannot locate database file '%@'.", dbPath2); } if(!(sqlite3_open([dbPath2 UTF8String], &amp;db) == SQLITE_OK)) { NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); } NSLog(@"access to the second DB is ok"); // const char *sql = "SELECT F_Keyword FROM wordss"; const char *sql2 = "SELECT field7 FROM Sheet1 WHERE field1 = 'titleString' "; //NSLog(sql2); sqlite3_stmt *sqlStatement2; if(sqlite3_prepare(db, sql2, -1, &amp;sqlStatement2, NULL) != SQLITE_OK) { NSLog(@"Problem with prepare the db"); NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); }else{ // while (sqlite3_step(sqlStatement2)==SQLITE_ACCESS_EXISTS) { NSLog(@"Starting to prepare the result"); Author * author2 = [[Author alloc] init]; NSLog(@"Author 2 created"); author2.genre2 = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement2, 7 )]; NSLog(@"Initialistion of author 2 is ok"); // NSLog(author2.genre); // authorNAme = author2.genre; [theauthors addObject:author2]; // } } } @catch (NSException *exception) { NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); } @finally { // sqlite3_finalize(sqlStatement);. // authorNAme = nil; sqlite3_close(db); // authorNAme = Nil; return theauthors; } */ //[self.navigationController pushViewController:dvController animated:YES]; } - (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath { //return UITableViewCellAccessoryDetailDisclosureButton; return UITableViewCellAccessoryDisclosureIndicator; } - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { [self tableView:tableView didSelectRowAtIndexPath:indexPath]; } @end </code></pre> <p>DetailsView controller know as Details.m : </p> <pre><code>// // Details.m // AuthorsApp // // Created by georges ouyoun on 7/17/12. // Copyright (c) 2012 __MyCompanyName__. All rights reserved. // #import "Details.h" #import "Author.h" #import "AuthorVC.h" #import &lt;sqlite3.h&gt; @interface Details () @end @implementation Details @synthesize Favo; @synthesize text2; @synthesize labelText; @synthesize selectedAuthors; @synthesize author , infoRequest; BOOL PAss = NO; BOOL SElected2 = NO; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // authorNAme = author.genre; // self.labelText.text =authorNAme; // Do any additional setup after loading the view. self.labelText.text = authorNAme; self.text2.text = authorNAme2; /* This is where the label text APPearsssssssss */ NSLog(@"Everything is ok now !"); // NSLog(authorNAme); } - (void)viewDidUnload { // [self setLabelText:nil]; NSLog(@"U have entered view did unload"); [AddBut release]; AddBut = nil; [self setText2:nil]; [super viewDidUnload]; [self setLabelText:Nil]; [authorNAme release]; // Release any retained subviews of the main view. } /* - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if ([segue.identifier isEqualToString:@"AuthorsCell"]) { [segue.destinationViewController setLabelText:author.title]; } } */ -(void)viewWillAppear:(BOOL)animated { //labelText.text = authorNAme; NSLog(@"U have entered the viewWillAppear tag"); // detailsLabel.text = food.description; //authorNAme=Nil; //[self setauthorName:Nil]; } /* -(void) viewDidAppear:(BOOL)animated{ labelText.text = @"This is the DidAppearTag"; NSLog(@"U have entered the viewDidAppear tag"); } */ -(void) viewWillDisappear:(BOOL)animated{ NSLog(@"This is the view will disappear tag"); //authorNAme.release; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } - (void)dealloc { [labelText release]; [AddBut release]; [text2 release]; [super dealloc]; } - (IBAction)AddButClick:(UIButton *)sender { [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateSelected]; [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateHighlighted]; Favo = [[NSMutableArray alloc] initWithCapacity:1000000]; NSLog(authorNAme); @try { NSFileManager *fileMgr = [NSFileManager defaultManager]; // NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"dictionary.sqlite"]; //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"authorsDb2.sqlite"]; // NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"FinalDb.sqlite"]; //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"xxJuridique-FINAL-OK.sqlite"]; NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; BOOL success = [fileMgr fileExistsAtPath:dbPath]; if(!success) { NSLog(@"Cannot locate database file '%@'.", dbPath); } if(!(sqlite3_open([dbPath UTF8String], &amp;db) == SQLITE_OK)) { NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); } // const char *sql = "SELECT F_Keyword FROM wordss"; const char *sql = "SELECT * FROM Sheet1"; NSLog(@"Successfully selected from database"); sqlite3_stmt *sqlStatement; if(sqlite3_prepare(db, sql, -1, &amp;sqlStatement, NULL) != SQLITE_OK) { NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); }else{ NSLog(@"Got in the else tag"); while (sqlite3_step(sqlStatement)==SQLITE_ROW /*&amp;&amp; PAss == NO*/) { NSLog(@"Got in the while tag"); Author * author = [[Author alloc] init]; NSLog(@"Author initialized"); author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,10)]; NSLog(@"Initialization ok"); // NSLog(author.name); if(/*author.name == @"NO" &amp;&amp;*/ HighLighted == NO){ //const char *sql2 = "INSERT INTO Sheet1 "; [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateNormal]; NSLog(@"We have not selected it as fav yet"); // [AddBut setSelected:NO]; //btn changes to normal state NSLog(@"The button was NOt highlighted and now is"); HighLighted = YES; // PAss = YES; // [self release]; break; } else { NSLog(@"We have selected it as fav"); [AddBut setImage:[UIImage imageNamed:@"apple-logo.png"] forState:UIControlStateNormal]; [AddBut setSelected:NO]; //btn changes to normal state NSLog(@"The button was highlighted and now is NOt"); HighLighted = NO; break; // [self viewDidLoad]; // PAss = YES; } // [Favo release]; // NSLog(Favo); // author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; // author.title = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; // author.genre = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 4)]; // [theauthors addObject:author]; } } } @catch (NSException *exception) { NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); } @finally { // sqlite3_finalize(sqlStatement); sqlite3_close(db); return Favo; } // [AddBut setSelected:YES]; // if(SElected == YES){ // NSLog(@"The button was highlighted and now not"); // // [AddBut setImage:[UIImage imageNamed:@"apple-logo.png"] forState:UIControlStateNormal]; // [AddBut setSelected:NO]; //btn changes to highlighted åstate // SElected = NO; // // } // // else{ // // [AddBut setSelected:YES]; //btn changes to normal state // NSLog(@"The button was NOt highlighted and now is"); // SElected = YES; // // } } @end </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload