1、在终端上创建数据库:sqlite3 mydata.db;create table person(id,name,age);
create table if not exists person(id,age);//如果没有这个表,就创建,有不创建
create table if not exists person(id interger primary key autoincrement,name text,age interger);
//标准写法
2、插入
insert into person (id,age)values(’1′,’name’,’19′);
update person set name = ‘cao’;
delete from person where id = ’1′;
select id,name from person;
select * from person;
select * from person where id = ’1′;
3.
select count(*)from info;
4,查看数据库信息,sqlite特有的命令
.tables 查看表
.schema 显示表头
.dump <table name>显示历史命令
5,在一个工程里添加数据库
(1)导入libsqlite3.dylib文件
点击工程,summary->Linked Frameworks and Libraries ->libsqlite3.dylib,add;
#import <sqlite3.h>
NSString * db_file = [[NSBundle mainBundle] pathForResource:@”qq”ofType :@”db”];
//打开数据库
int n = sqlite3_open([db_file UTF8String],&db);让DB指针指向数据库
if(n != sqlITE_OK)
{
NSLog(@”open error”);//判断是否打开数据库
}
sqlite3_stmt * statement = nil;//指向表头,并且存储查询的数据
NSString * sql = @”select * from chat”;
if(sqlite3_prepare(db,[sql UTF8String],-1,&statement,NULL)!=sqlITE_OK)
{
NSLog(@”start error”);//开始查询
}
while(sqlite3_step(statement)==sqlITE_OK)
{
NSString * time = [NSString stringWithUTF8String
(char *)sqlite3_column_text(statement,0)];
//0代表列号,从0-最后一列-1;
}
sqlite3_finalize(statement);//finish 查询
//插入数据
NSString * sql1 = @”insert into chat values(’2011-9-19′,’xiaoji’,'hoew’,’1′)”;
char * errmsg;
if(sqlite3_exec(db,[sql1 UTF8String],NULL,&errmsg)!=sqlITE_OK)
{
NSLog(@”message:%s”,errmsg);
}
6,由于在iPhone项目开发中,一个项目对应唯一的UIApplication,一个
UIApplication又对应唯一的ApplicationDelegate,即常见的AppDelegate文件
因此,可以在这里面增加一些全局都要使用的,比如数据库的打开关闭。
AppDelegate.h中添加:
#import <sqlite3.h>
sqlite3* database;//属性。
@property (nonatomic,retain)sqlite3 * database;
AppDelegate.h中添加。
@synthesize database;
声明函数:
-(NSString *)dataPath
{
NSString * path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSlog(“%@”,path);
return [path stringByAppendingPathComponent:@"myDatabaseName"];
}
-(void)openDatabase
{
NSString * name = [self dataPath];
if(sqlite3_open([name UTF8String],&database)!=sqlITE_OK)
{
NSLog(@”open error”);
database = NULL;
}
NSString * sql = @”create table if not exists”
“personInfo(ID integer primary key autoincrement,age int)”;
char * errMsg = NULL;
if(sqlite3_exec(database,&errMsg)!=sqlITE_OK)
{
NSLog(@”error to exec”);
}
}
-(void)closeDatabase
{
if(database)
{
sqlite3_close(database);
}
}
-(void)dealloc
{
[self closeDatabase];
}
并且在添加主页的那个函数里面添加代码。
[self openDatabase];
4月12日心得:
今天连接了数据库,很受打击,总结了一下今天的东西,发现总结真的是一个好东西,
1、创建数据库,在终端,随便找个文件夹sqlite3 databaseName.db.这时候把创建好的数据库导入到项目中,此时,项目与终端已经没什么联系了,表呢,一般在项目中创建,避免别人装个系统还要装个终端?
2、可以打印出来项目的沙盒,因为你的databaseName.db就在沙盒里呀,笨蛋,这时候再在终端找到沙盒,就可以在终端观察数据库在程序中的运行了,获得沙盒路径的方法有两种:
NSString * path = [[NSBuddle mainBuddle] pathForResource:@”databaseName” forType:@”db”];
另外一种,获得沙盒后还可以在沙盒中加入指定的文件夹
NSString * path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSlog(“%@”,path);
return [path stringByAppendingPathComponent:@"myDatabaseName"];
3、接下来就开始打开数据库了,首先要设置一个全局变量sqlite3 * database;
打开数据库在上面都有,就是把沙盒中的数据库读到 database里面。
sqlite3_open([path UTF8string],&database);