How to programmatically create sqlite database?

I am new to iPhone development. I created a database using a terminal in mac os x. Now I am trying to create a database programmatically in an iPhone application using objective- C . Can someone tell me a good site where I can view samples of applications that work, and is there any site for studying the tutorial? Please help me.

+8
iphone sqlite3
source share
7 answers

From the Techtopia tutorial :

 NSString *docsDir; NSArray *dirPaths; // Get the documents directory dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); docsDir = [dirPaths objectAtIndex:0]; // Build the path to the database file databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"contacts.db"]]; NSFileManager *filemgr = [NSFileManager defaultManager]; if ([filemgr fileExistsAtPath: databasePath ] == NO) { const char *dbpath = [databasePath UTF8String]; if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK) { char *errMsg; const char *sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)"; if (sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK) { status.text = @"Failed to create table"; } sqlite3_close(contactDB); } else { status.text = @"Failed to open/create database"; } } [filemgr release]; 
+13
source share
 #pragma mark - SQLite -(void)createDatabase { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; databasePath = [[NSString alloc]initWithString:[documentsDirectory stringByAppendingPathComponent:@"timings.db"]]; if ([[NSFileManager defaultManager] fileExistsAtPath:databasePath] == FALSE) { if (sqlite3_open([databasePath UTF8String], &timingsDatabase) == SQLITE_OK) { const char *sqlStatement = "CREATE TABLE IF NOT EXISTS TIMINGS (ID INTEGER PRIMARY KEY AUTOINCREMENT, TIMESTAMP TEXT, TIMING TEXT)"; char *error; sqlite3_exec(timingsDatabase, sqlStatement, NULL, NULL, &error); sqlite3_close(timingsDatabase); } } } -(void)storeTiming { if (sqlite3_open([databasePath UTF8String], &timingsDatabase) == SQLITE_OK) { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"HH:mm:ss.SSS"]; NSString *insertStatement = [NSString stringWithFormat:@"INSERT INTO TIMINGS (TIMESTAMP, TIMING) VALUES (\"%@\", \"%@\")", [dateFormatter stringFromDate:startDate], stopWatchLabel.text]; char *error; sqlite3_exec(timingsDatabase, [insertStatement UTF8String], NULL, NULL, &error); sqlite3_close(timingsDatabase); [dateFormatter release]; } } -(void)getTimings { if (sqlite3_open([databasePath UTF8String], &timingsDatabase) == SQLITE_OK) { NSString *queryStatement = [NSString stringWithFormat:@"SELECT TIMESTAMP, TIMING FROM TIMINGS"]; sqlite3_stmt *statement; if (sqlite3_prepare_v2(timingsDatabase, [queryStatement UTF8String], -1, &statement, NULL) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { NSLog(@"Timestamp: %s Timing: %s", sqlite3_column_text(statement, 0), sqlite3_column_text(statement, 1)); } sqlite3_finalize(statement); sqlite3_close(timingsDatabase); } } } 

Check out these examples:

+3
source share

Create Sqlite Database in xcode

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [self createDb]; return YES; } -(void)createDb { NSArray *dir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *dbPath=[NSString stringWithFormat:@"%@/userDb.sqlite",[dir lastObject]]; sqlite3 *db; NSFileManager *fm=[NSFileManager new]; if([fm fileExistsAtPath:dbPath isDirectory:nil]) { NSLog(@"Database already exists.."); return; } if (sqlite3_open([dbPath UTF8String],&db)==SQLITE_OK) { const char *query="create table user (userName VARCHAR(20),userAdd VARCHAR(20), userPass VARCHAR(20))"; if (sqlite3_exec(db, query, NULL, NULL, NULL)==SQLITE_OK) { NSLog(@"User table created successfully.."); }else { NSLog(@"User table creation failed.."); } }else { NSLog(@"Open table failed.."); } sqlite3_close(db); } 
+2
source share

Creating a database for your iPhone application is a little longer, but it has many steps, but it is so simple:

First of all, you have to download mozilla fire fox and download your add-ons, and you can find the sqlite database by clicking "Tools". And you can create a new databse file with columns and rows. Its a simple process to create a database file, after which you can include this file in your X code project.

For example: - as an image that you usually include in your Xcode project.

after that write the following code, it works well for me :)

In your. m write the following sqlite code

 #import "YourHeaderFile" static sqlite3 *database = nil; static sqlite3_stmt *addStmt = nil; static sqlite3_stmt *updateStmt = nil; @implementation 'YourImplementClass' - (NSString *) getDBPath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); NSString *documentsDir = [paths objectAtIndex:0]; return [documentsDir stringByAppendingPathComponent:@"YourDataBaseFileName.sqlite"]; } - (void) insertValueToDatabase { NSString *dbPath =[self getDBPath]; NSString *select_Meal = dummy_select_Meal; NSString *dateTime = dummy_date_Time; NSString *location = dummy_location; NSString *mealItem = dummy_mealItem; if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { const char *sqlDB = "Insert into iHad(Mealtype,DateAndTime,Location,Mealitem) VALUES (?,?,?,?)"; if(sqlite3_prepare_v2(database, sqlDB, -1, &addStmt, NULL) != SQLITE_OK) NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); sqlite3_bind_text(addStmt, 1, [select_Meal UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_text(addStmt, 2, [dateTime UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_text(addStmt, 3, [location UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_text(addStmt, 4, [mealItem UTF8String], -1, SQLITE_TRANSIENT); if(SQLITE_DONE != sqlite3_step(addStmt)) NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database)); //else //SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid //coffeeID = sqlite3_last_insert_rowid(database); //Reset the add statement. sqlite3_reset(addStmt); } else sqlite3_close(database); } 

and for saving you can create such a method

 -(void)saveButtonClick { if (![dummy_select_Meal length] || ![dummy_mealItem length]) { UIAlertView *alert = [[UIAlertView alloc] init]; [alert setTitle:@"Select Meal Type/Meal Item"]; [alert setDelegate:self]; [alert addButtonWithTitle:@"Ok"]; [alert show]; [alert release]; } else { indicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(30,30,50,50)]; indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;//UIActivityIndicatorViewStyleWhiteLarge;// [self insertValueToDatabase];-----------------------> To insert data into data base iHadAppDelegate *delegate = [[UIApplication sharedApplication]delegate]; [delegate readMealsFromDatabase]; [rootController reloadTable_SaveButton]; } [rootController showTablePopupAction:nil]; } 

If you have any problems, answer me, I will help you :)

+1
source share

If you want to use a database to store data in CoreData , this is a good resource for storing large amounts of data for an application, keep in mind though CoreData is not a database.

You can easily use SQLite on the iOS platform, but you are not provided with visual tools for its development, as is the case with CoreData p>

If you are storing less data, look at storing information in plists.

If you store multiple lines, ints or bool, you should use NSUserDefaults

Without additional information, I could not say exactly what would be the best approach for you.

Other resources:

0
source share

Call this function in the didFinishLaunchingWithOptions file:

  -(void)createdb { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:@"emp.sqlite"]; NSURL *dbURL = [NSURL fileURLWithPath:dbPath]; // copy a database from the bundle if not present // on disk NSFileManager *fm = [NSFileManager defaultManager]; if (![fm fileExistsAtPath:dbPath]) { NSURL *bundlePath = [[NSBundle mainBundle] URLForResource:@"emp" withExtension:@"sqlite"]; NSError *error = nil; if (!bundlePath || ![fm copyItemAtURL:bundlePath toURL:dbURL error:&error]) { NSLog(@"error copying database from bundle: %@", error); } } else { NSLog(@"Success in Copy file"); } } 

Click here to download the full example.

0
source share

Call this function after memmory warning.

- (IBAction) saveData: (UIButton *) sender {

 sqlite3_stmt *statement; const char *dbPath = [databasePath UTF8String]; if(sqlite3_open(dbPath, &contactDB)== SQLITE_OK){ NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO CONTACTS(NAME,ADDRESS,PHONE)VALUES(\"%@\",\"%@\",\"%@\")",_name.text,_address.text,_phoneNo.text]; const char *insert_stmt = [insertSQL UTF8String]; sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL); if (sqlite3_step(statement)== SQLITE_DONE) { _status.text = @"Contact added"; _name.text = @""; _address.text = @""; _phoneNo.text = @""; }else{ _status.text = @"Failed to add contact"; } sqlite3_finalize(statement); sqlite3_close(contactDB); } 

}

0
source share

All Articles