我为我的SQLite数据库创建了一个insert
语句,用于插入记录。我的代码工作正常 - 当我运行我的代码时,它会显示一条消息,说明添加了一条新记录。当我打开SQLite浏览器以查看记录是否已添加到数据库表时,该记录不会出现。可能是什么问题呢?我的代码工作正常。它在模拟器中显示联系人添加的消息,但在数据库中未添加联系人。请帮我解决这个问题。
这是我的代码:
#import <UIKit/UIKit.h>
#import "TAddNewJourney.h"
@interface insertAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
TAddNewJourney *iC;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) TAddNewJourney *iC;
-(void) chekAndCreateDatabase;
-(void)insert;
@end
.m文件:
#import "insertAppDelegate.h"
#import <sqlite3.h>
#import "TAddNewJourney.h"
#import "Global.h"
@implementation insertAppDelegate
@synthesize window;
@synthesize iC;
static NSString* databaseName;
static NSString* databasePath;
static sqlite3* database;
-(void) chekAndCreateDatabase
{
BOOL success;
databaseName=@"demo.sqlite";
NSArray *documentPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir =[documentPaths objectAtIndex:0];
databasePath = [NSString stringWithFormat:@"%@/%@", documentsDir, databaseName];
NSLog(@"Database Path is: %@", databasePath);
NSLog(@"Database Name is: %@", databaseName);
NSFileManager *fileManager=[NSFileManager defaultManager];
if( [fileManager fileExistsAtPath:databasePath] == NO ) {
// Open database.
if( sqlite3_open( [databasePath UTF8String], &database ) == SQLITE_OK ) {
char* errorMsg;
// Create Articles Table.
const char* articlesTable = "CREATE TABLE [UserJourney] (name text, location text)";
if( sqlite3_exec(database, articlesTable, NULL, NULL, &errorMsg) != SQLITE_OK )
NSLog( @"Fail to create UserJourney table. Error is: %@", errorMsg );
} else NSLog(@"Fail to Create/Open database");
}
else {
NSLog(@"Open database.");
sqlite3_open( [databasePath UTF8String], &database );
}
}
-(void)insert{
[self chekAndCreateDatabase];
// Create Pre Sqlite query string.
NSString* preSqliteQuery = @"INSERT INTO UserJourney VALUES ('%@', '%@')";
// Create Sqlite query string.
NSString* queryString = [NSString stringWithFormat:preSqliteQuery,Gjourney,Glocation];
// Execute query.
if(sqlite3_exec(database, [queryString UTF8String], NULL, NULL, NULL)== SQLITE_DONE){
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"Record added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
alert = nil;
}
else {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"not Added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
alert = nil;
}
这是我的控制器类:
@interface TAddNewJourney : UIViewController {
IBOutlet UITextField *mTextJourney;
IBOutlet UITextField *mTextLocation;
IBOutlet UIButton *mStart;
IBOutlet UIButton *mCancel;
}
@property (nonatomic,retain)UITextField *textjourney;
@property (nonatomic,retain)UITextField *textlocation;
-(IBAction)Start:(id)sender;
-(IBAction)Cancel:(id)sender;
@end
.m文件
#import "TAddNewJourney.h"
#import "Global.h"
#import <sqlite3.h>
#import "insertAppDelegate.h"
@implementation TAddNewJourney
@synthesize textjourney=mTextJourney;
@synthesize textlocation =mTextLocation;
-(IBAction)Start:(id)sender{
Gjourney = mTextJourney.text;
Glocation = mTextLocation.text;
insertAppDelegate *app=(insertAppDelegate *)[[UIApplication sharedApplication]delegate];
[app insert];
}
答案 0 :(得分:0)
你可以这样试试
NSString* str = [NSString stringwithformat:@"INSERT OR REPLACE INTO insert (textfieldm, textfieldn) VALUES ('%@', '%@')", Gunameq, Gpassq];
if(sqlite3_exec(database, [str UTF8String], NULL, NULL, NULL) != SQLITE_DONE ) {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"Record added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
alert = nil;
}
else {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"not Added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
alert = nil;
}
我想通过这种方式你可以做到!祝你好运!!!
答案 1 :(得分:0)
.h文件
#import <Foundation/Foundation.h>
#import <sqlite3.h>
@interface SqliteDatabase : NSObject {
}
// Check and Create Sqlite Table.
+ (void) CheckAndCreateDatabase;
+ (void) insert;
@end
.m文件
// Static Variables.
static NSString* dataBaseName;
static NSString* dataBasePath;
static sqlite3* database;
#pragma mark -
#pragma mark Check and Create Sqlite Table.
+ (void) CheckAndCreateDatabase {
NSLog(@"\nCall of: CheckAndCreateDatabase");
// Set database name.
dataBaseName = @"Database.db";
// Initialize database path.
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDir = [paths objectAtIndex:0];
dataBasePath = [NSString stringWithFormat:@"%@/%@", documentsDir, dataBaseName];
NSLog(@"Database Path is: %@", dataBasePath);
NSLog(@"Database Name is: %@", dataBaseName);
// Create a FileManager object, we will use this to check the status
// of the database and to copy it over if required
NSFileManager* fileManager = [NSFileManager defaultManager];
// Check if the database has already been created in the users filesystem.
if( [fileManager fileExistsAtPath:dataBasePath] == NO ) {
// Open database.
if( sqlite3_open( [dataBasePath UTF8String], &database ) == SQLITE_OK ) {
char* errorMsg;
// Create Articles Table.
const char* articlesTable = "CREATE TABLE [TableName] (textfieldm, text, textfieldn text)";
if( sqlite3_exec(database, articlesTable, NULL, NULL, &errorMsg) != SQLITE_OK )
NSLog( @"Fail to create [TableName] table. Error is: %@", errorMsg );
} else NSLog(@"Fail to Create/Open database");
}
else {
NSLog(@"Open database.");
sqlite3_open( [dataBasePath UTF8String], &database );
}
}
以下是必须插入的方式
+ (void) insert {
// Create Pre Sqlite query string.
NSString* preSqliteQuery = @"INSERT INTO [TableName] (textfieldm, textfieldn VALUES ('%@', '%@')";
// Create Sqlite query string.
NSString* queryString = [NSString stringWithFormat:preSqliteQuery, Gunameq, Gpassq];
// Execute query.
sqlite3_exec(database, [queryString UTF8String], NULL, NULL, NULL);
}
如果我帮助你,别忘了评价我!!!祝你好运!!!
答案 2 :(得分:0)
sqlite3_exec(database, [queryString UTF8String], NULL, NULL, NULL);
NSLog("Error is: %@");
添加NSLog行并查看日志,请告诉我您的项目中发生了什么错误。也许以这种方式我可以告诉你该怎么做。