Ich mache eine Anwendung, in der ich eine Aktualisierungsabfrage verwenden möchte?
In meiner Anwendung gibt es zwei Stufen, um den Registrierungsprozess abzuschließen
Auf Seite 1 habe ich ein Anmeldeformular und eine Schaltfläche zum Absenden?
beim Klicken auf die Schaltfläche "Senden" sollten alle Details in meine Sqlite-Tabelle eingefügt werden.
Auf Seite 2 habe ich eine Bestätigungsseite und eine Schaltfläche zum Bearbeiten und Fortfahren?
alle Werte, die in einer Tabelle gespeichert sind, sollten vom Benutzer auf dieser Seite angezeigt werden, und wenn er eine Änderung vornehmen möchte, sollte er in der Lage sein, dies zu tun. Sobald der Benutzer einen Wert bearbeitet hat und er auf die Schaltfläche "Weiter" drückt, sollten alle eingefügten Werte aktualisiert werden?
aber ich habe versucht, dies zu tun, aber ich bin nicht in der Lage, den zuletzt eingegebenen Wert zu aktualisieren?
Im Folgenden finden Sie meinen Code Seite1 Code einfügen:
-(void)submit
{
if( ([UserName.text isEqualToString:@""]) || ([Password.text isEqualToString:@""]) ||
([ConfirmPassword.text isEqualToString:@""]) || ([Name.text isEqualToString:@""]) ||
([Email.text isEqualToString:@""]) || ([ContactNO.text isEqualToString:@""]) ||
([MobileNo.text isEqualToString:@""]) || ([Address.text isEqualToString:@""]) )
{
UIAlertView *ErrorAlert = [[UIAlertView alloc] initWithTitle:@"Error!!"
message:@"Please fill in the details." delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[ErrorAlert show];
[ErrorAlert release];
}
else
{
Confirmation_form *conForm = [[Confirmation_form alloc] initWithNibName:@"Confirmation_form" bundle:nil];
conForm.data = UserName.text;
conForm.data1 = Password.text;
conForm.data2 = ConfirmPassword.text;
conForm.data3 = Name.text;
conForm.data4 = Email.text;
conForm.data5 = ContactNO.text;
conForm.data6 = MobileNo.text;
conForm.data7 = Address.text;
sqlite3_stmt *statement;
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &test1DB) == SQLITE_OK)
{
NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO test(UserName, Password, ConfirmPassword, Name, Email, ContactNO, MobileNo, Address) VALUES (\"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\")",UserName.text, Password.text, ConfirmPassword.text, Name.text, Email.text, ContactNO.text, MobileNo.text, Address.text];
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(test1DB, insert_stmt, -1, &statement, NULL);
if(sqlite3_step(statement) == SQLITE_DONE)
{
//status.text = @"Contact added";
UserName.text = @"";
Password.text = @"";
ConfirmPassword.text = @"";
Name.text = @"";
Email.text = @"";
ContactNO.text = @"";
MobileNo.text = @"";
Address.text = @"";
sqlite3_last_insert_rowid;
rowID = sqlite3_last_insert_rowid(test1DB);
NSLog(@"last inserted rowId = %d",rowID);
sqlite3_reset(statement);
sqlite3_finalize(statement);
sqlite3_close(test1DB);
[self.navigationController pushViewController:conForm animated:YES];
}
}
}
}
Mit dem obigen Code kann ich die Zeilen-ID abrufen, aber ich kann diese Zeilen-ID nicht in der Aktualisierungsabfrage verwenden.
Im Folgenden finden Sie meinen Code Seite2 Code aktualisieren:
-(IBAction)Update;
{
sqlite3_stmt *statement;
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &test1DB) == SQLITE_OK)
{
NSString *insertSQL = [NSString stringWithFormat:@"UPDATE test SET UserName='%@',Password='%@',ConfirmPassword='%@',Name='%@',Email='%@',ContactNO='%@',MobileNO='%@',Address='%@'WHERE ID='%@'",UserName.text,Password.text,ConfirmPassword.text, Name.text, Email.text, ContactNO.text, MobileNo.text, Address.text, sqlite3_last_insert_rowid(test1DB)];
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(test1DB, insert_stmt, -1, &statement, NULL);
if(sqlite3_step(statement) == SQLITE_DONE)
{
sqlite3_step(statement);
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"Record added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
alert = nil;
sqlite3_finalize(statement);
sqlite3_close(test1DB);
}
else {
sqlite3_step(statement);
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"Record notadded" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
alert = nil;
}
}
}
0 Stimmen
Ich habe auch einen kurzen Bericht geschrieben Lehrgang die diese Implementierung beinhaltet.