OC中關聯SQLITE數據庫

一、在終端上建立數據庫:sqlite3 mydata.db;create table person(id,name,age);
create table if not exists person(id,name,age);//若是沒有這個表,就建立,有不建立
create table if not exists person(id interger primary key autoincrement,name text,age interger);
//標準寫法
二、插入
insert into person (id,name,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>

sqlite3 * db;//用於操做數據庫變量

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, NULL, &errmsg)!=SQLITE_OK)

    {
       NSLog(@"message:%s",errmsg);
    }

sqllite3_close(db);//關閉數據庫sql

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,name text,age int)";
     char * errMsg = NULL;
     if(sqlite3_exec(database,[sql UTF8String],NULL,NULL,&errMsg)!=SQLITE_OK)
{
     NSLog(@"error to exec");
}

}
-(void)closeDatabase
{
     if(database)
{
     sqlite3_close(database);
}
}
-(void)dealloc
{
     [self closeDatabase];
}
而且在添加主頁的那個函數裏面添加代碼。
[self openDatabase];數據庫

4月12日心得:函數

今天鏈接了數據庫,很受打擊,總結了一下今天的東西,發現總結真的是一個好東西,atom

一、建立數據庫,在終端,隨便找個文件夾sqlite3 databaseName.db.這時候把建立好的數據庫導入到項目中,此時,項目與終端已經沒什麼聯繫了,表呢,通常在項目中建立,避免別人裝個系統還要裝個終端?指針

二、能夠打印出來項目的沙盒,由於你的databaseName.db就在沙盒裏呀,笨蛋,這時候再在終端找到沙盒,就能夠在終端觀察數據庫在程序中的運行了,得到沙盒路徑的方法有兩種:sqlite

NSString * path = [[NSBuddle mainBuddle] pathForResource:@"databaseName" forType:@"db"];開發

另一種,得到沙盒後還能夠在沙盒中加入指定的文件夾rem

NSString * path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
     NSlog("%@",path);
     return [path stringByAppendingPathComponent:@"myDatabaseName"];string

三、接下來就開始打開數據庫了,首先要設置一個全局變量sqlite3 * database;it

打開數據庫在上面都有,就是把沙盒中的數據庫讀到 database裏面。

sqlite3_open([path UTF8string],&database);

相關文章
相關標籤/搜索