1.Mesa sqlite确实有问题,不好用,容易crash
2.大家多说sqlite manager firefox plugin好用。对了,昨天刚安装了firefox,可以试用一下哦。没有试用firefox浏览器是无法安装的
3.用
//复制到document上以后,我们就可以bakcup,甚至cloud backup
copy it into your"Supporting Files" or "Resources" folder. From there we will transfer the database file to the iPhone "Documents" folder. The advantage of copying the database into Documents folder is that it will be backed up whenever the iPhone is backed up. For iOS5 cloud enabled devices this means your database will be available on the cloud.
//为了文件可操作一定要复制到document目录的,抽取到DBOperation 或filemanager
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.databaseName = @"Customers.db"; NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentDir = [documentPaths objectAtIndex:0]; self.databasePath = [documentDir stringByAppendingPathComponent:self.databaseName]; [self createAndCheckDatabase]; // Override point for customization after application launch. return YES; } -(void) createAndCheckDatabase { BOOL success; NSFileManager *fileManager = [NSFileManager defaultManager]; success = [fileManager fileExistsAtPath:databasePath]; if(success) return; NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseName]; [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; }
//
#import <Foundation/Foundation.h> #import "FMDatabase.h" #import "FMResultSet.h" #import "Utility.h" #import "Customer.h" @interface FMDBDataAccess : NSObject { } -(NSMutableArray *) getCustomers; -(BOOL) insertCustomer:(Customer *) customer; -(BOOL) updateCustomer:(Customer *) customer; @end
-(NSMutableArray *) getCustomers
{
NSMutableArray *customers = [[[NSMutableArray alloc] init] autorelease];
FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
[db open];
FMResultSet *results = [db executeQuery:@"SELECT * FROM customers"];
while([results next])
{
Customer *customer = [[Customer alloc] init];
customer.customerId = [results intForColumn:@"id"];
customer.firstName = [results stringForColumn:@"firstname"];
customer.lastName = [results stringForColumn:@"lastname"];
[customers addObject:customer];
}
[db close];
return customers;
}
//插入用户信息,inert into customers()values(?,?),数组,以nil为结束标识 。
-(BOOL) insertCustomer:(Customer *) customer { // insert customer into database FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]]; [db open]; BOOL success = [db executeUpdate:@"INSERT INTO customers (firstname,lastname) VALUES (?,?);",customer.firstName,customer.lastName,nil]; [db close]; return success; }
好多人遇到的一个问题就是 如何也写不进入,因为咩有copy文件到document 需要提醒的是document下并不是所有文件目录多有的,有些例如resource/support 就需要自己建立的。
The directories returned byNSSearchPathForDirectoriesInDomains
are not guaranteed to exist; you need to create them yourself,if necessary (seethe documentation). NSFileManager'screateDirectoryAtPath:withIntermediateDirectories:attributes:error:
can help with that.
下面这段代码就假设了 目录support director已经存在!!!
NSString* appSupportDir = [NSFileManager appSupportDir]; tuningsPath [appSupportDir stringByAppendingPathComponent:@"tunings.txt"NSBundle bundle NSBundle mainBundle origTuningsPath bundle pathForResource"tuningsOriginal" ofType"txt"NSFileManager fileManager defaultManagerNSError error nil;
//
.databases List names and files of attached databases
.dump ?TABLE? ... Dump the database in an sql text format If TABLE specified,only dump tables matching LIKE pattern TABLE. .echo ON|OFF Turn command echo on or off .exit Exit this program .explain ?ON|OFF? Turn output mode suitable for EXPLAIN on or off. With no args,it turns EXPLAIN on. .header(s) ON|OFF Turn display of headers on or off .help Show this message .import FILE TABLE Import data from FILE into TABLE .indices ?TABLE? Show names of all indices If TABLE specified,only show indices for tables matching LIKE pattern TABLE. .log FILE|off Turn logging on or off. FILE can be stderr/stdout .mode MODE ?TABLE? Set output mode where MODE is one of: csv Comma-separated values column Left-aligned columns. (See .width) html HTML <table> code insert sql insert statements for TABLE line One value per line list Values delimited by .separator string tabs Tab-separated values tcl TCL list elements .nullvalue STRING Print STRING in place of NULL values .output FILENAME Send output to FILENAME .output stdout Send output to the screen .prompt MAIN CONTINUE Replace the standard prompts .quit Exit this program .read FILENAME Execute sql in FILENAME .restore ?DB? FILE Restore content of DB (default "main") from FILE .schema ?TABLE? Show the CREATE statements If TABLE specified,only show tables matching LIKE pattern TABLE. .separator STRING Change separator used by output mode and .import .show Show the current values for varIoUs settings .stats ON|OFF Turn stats on or off .tables ?TABLE? List names of tables If TABLE specified,only list tables matching LIKE pattern TABLE. .timeout MS Try opening locked tables for MS milliseconds .width NUM1 NUM2 ... Set column widths for "column" mode .timer ON|OFF Turn the cpu timer measurement on or off