2
iphone sdk(xcode)のsqlite DBにデータを挿入するにはどうすればよいですか? ありがとうございます!iphone sdkのテーブル(sqlite db)に挿入する方法
iphone sdk(xcode)のsqlite DBにデータを挿入するにはどうすればよいですか? ありがとうございます!iphone sdkのテーブル(sqlite db)に挿入する方法
あなたは、あなたがそれと対話することができ、これらの2つの方法
-(id) initDatabase{
databaseName = @"db.sqlite";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
[databasePath retain];
return self;
}
-(void) checkAndCreateDatabase{
BOOL success;
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];
}
でDBを初期化する必要があります:まず
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
static sqlite3_stmt *compiledStatement;
sqlite3_exec(database, [[NSString stringWithFormat:@"insert into myTable (var1, var2) values ('%@', '%@')", myVar1, myVar2] UTF8String], NULL, NULL, NULL);
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
それが簡単にDB
にデータを格納するためにNSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSString *dbPath =[documentsDir stringByAppendingPathComponent:@"register.sqlite"];
BOOL success = [fileManager fileExistsAtPath:dbPath];
sqlite3_stmt *selectstmt;
if(!success)
{
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"register.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
if (!success)
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
//*************** insert value in database******************************\\
const char *sql = "insert into reg_FORM (firstname,lastname,email,company,phone) VALUES ('nannav','cs','[email protected]','ibm',123456789)";
sqlite3_prepare_v2(database,sql, -1, &selectstmt, NULL);
if(sqlite3_step(selectstmt)==SQLITE_DONE)
{
NSLog(@"insert successfully");
}
else
{
NSLog(@"insert not successfully");
}
sqlite3_finalize(selectstmt);
sqlite3_close(database);
}
}
THANKあなたは恒久的な答えを求めています!しかし、fisrtと2番目のメソッドを実装すると、2つのエラーが発生します。 "databaseName undeclared"と "databasepath undeclared" –
NSString * databaseName; NSString * databasePath; sqlite3 *データベース; char * sqlStatement; sqlite3_stmt * compiledStatement; ...それは動作するはずです! – vincent
申し訳ありませんが、私は真の初心者です...どこでこれらの変数を宣言しなければなりませんか? –