我将一些数据写入我的sqlite3数据库时遇到问题。问题是,在应用程序正在模拟器上工作,在INSERT之后我通过SELECT检查它,我能够在数据库中看到我的新数据。但在切换应用程序后,我正在丢失我的数据。我认为我没有法律写下这个文件的数据,但我检查了它,我有它。
当我在我的服务上工作时,我可以看到我的数据库中的数据,但是当我使用INSERT时,没有任何事情发生。
有没有人有同样的问题?有人可以帮我解决这个问题吗?
听到是INSERT的代码
NSString *insertStatement = [NSString stringWithFormat:@"INSERT INTO person (uniqueId, idn, heartP, sugar, data) VALUES (\"%i\", \"%@\", \"%@\", \"%@\", \"%@\");", uniqueIds, idns, heartPs, sugars, datas];
if(sqlite3_exec(database, [insertStatement UTF8String],NULL ,NULL ,nil)==SQLITE_OK){
NSLog(@"well done");
}
}
答案 0 :(得分:0)
我认为您的数据库不是文档目录中的副本。
答案 1 :(得分:0)
请检查此代码并检查您所犯的错误。我正在使用此代码,这对我有用。
sqlite3_stmt *statement;
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &adddata) == SQLITE_OK)
{
// NSLog(@"open");
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO contacts(FirstName,LastName,Company,Mobile,Home,Url,Street,City,State,Zip,Prefix,Suffix,Middle,JobTitle,Birthday,Note) VALUES (\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\")", firstName.text,lastName.text,companyName.text,mobileNumber.text,homeNumber.text,homeUrl.text,street.text,city.text,state.text,zip.text,prefix.text,suffix.text,middle.text,jobTitle.text,birthday.text,note.text];
const char *insert_stmt = [insertSQL UTF8String];
int c=sqlite3_prepare_v2(adddata, insert_stmt, -1, &statement, NULL);
NSLog(@"%d",c);
if (sqlite3_step(statement)==SQLITE_DONE)
{
alert=[[UIAlertView alloc]initWithTitle:@"alert" message:@"Data is added" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
[alert show];
NSLog(@"%@",insertSQL);
firstName.text = @"";
}
else
{
alert=[[UIAlertView alloc]initWithTitle:@"alert" message:@"Data is not added" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
[alert show];
}
sqlite3_finalize(statement);
sqlite3_close(adddata);
}
答案 2 :(得分:0)
即使您拥有该文件的写入权限,也无法写入您的应用包。您需要将文件移动到Library,Documents或tmp目录。
答案 3 :(得分:0)
试试这个,
sqlite3_stmt *statement;
NSString *insertStatement = [NSString stringWithFormat:@"INSERT INTO person (uniqueId, idn, heartP, sugar, data) VALUES (\"%i\", \"%@\", \"%@\", \"%@\", \"%@\");", uniqueIds, idns, heartPs, sugars, datas];
sqlite3_prepare_v2(database, [insertStatement UTF8String],-1, &selectstmt, NULL);
if(sqlite3_step(selectstmt)==SQLITE_DONE)
{
NSLog(@"insert successfully");
}