NSString *docsDir;
NSArray *dirPaths;
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
databasePath = [[NSBundle mainBundle] pathForResource:@"etkYeni2" ofType:@"sqlite"];
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK){
NSLog(@"icerdeyim");
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO etk (etkTip) VALUES ('%@')",yeniEkleLabel.text];
const char *query_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
NSLog(@"OK INSERTED");
} else {
NSLog(@"NOT INSERTED !!");
}
sqlite3_finalize(statement);
sqlite3_close(contactDB);
}
这是我从文本框中获取字符串并将其插入sqlite数据库的代码部分。我从firefox扩展sqlite管理器创建了数据库并将其添加到应用程序。它正如我在模拟器和ipod中所期望的那样运行我想要的东西(插入元素,当我使用SELECT查询时我可以看到它们),但它不是在iphone上插入元素。我的ipod touch在iOS 5上,iphone在iOS 6上。是因为iOS或iphone的版本和ipod touch是不同的sqlite或者是什么?我阅读了这个问题的大部分答案,仍然没有得到解决方案。有人可以在这种情况下帮助我吗? 谢谢..
答案 0 :(得分:2)
您的数据库未在电话目录中复制您需要添加该数据库。 使用此代码。
-(void)createdatabase
{
NSString *databaseName = @"Card.sqlite"; // Database Name
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = documentPaths[0];
NSLog(@"Dir : %@ ",documentsDir);
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager] ;
success = [fileManager fileExistsAtPath:databasePath];
if(success)
return;
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
NSLog(@"%@",databasePathFromApp);
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
}
将您的sqlite文件添加到mainbundle中。 这真的很有帮助。
答案 1 :(得分:0)
请尝试使用这个。如果您想在sqlite中插入数据,那么您必须使用此方法创建数据库并插入查询。我希望它会有所帮助..
- (void)executeQuery:(NSString *)insertQuery
{
sqlite3_stmt *statement;
if (sqlite3_open([[self databaseFilePath] UTF8String],&sqliteDB) == SQLITE_OK)
{
if(sqlite3_prepare_v2(sqliteDB,[insertQuery UTF8String], -1, &statement, NULL) == SQLITE_OK)
{
if(sqlite3_step(statement) != SQLITE_DONE)
{
sqlite3_finalize(statement);
}
}
else
NSLog(@"query Statement Not Compiled");
sqlite3_finalize(statement);
sqlite3_close(sqliteDB);
}
else
NSLog(@"Database Not Opened");
}
- (NSString *)databaseFilePath
{
databaseName=@"abc.sqlite";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *path = [paths objectAtIndex:0];
return [path stringByAppendingPathComponent:databaseName];
}