TwistedFate 資料庫初級使用

2021-07-08 17:27:30 字數 3449 閱讀 2542

使用步驟:

1. 引入libsqlite3.0框架

2. 在資料庫操作類裡 引入

//  單例的初始化方法

+ (sqlitemanager *)sharemanager;

// 插入資料

- (void)inserttablewithstudent:(student *)stu;

// 刪除資料

- (void)deletewithage:(nsinteger)age;

// 更新

- (void)updateage:(nsinteger)age byname:(nsstring *)name;

// 查詢

- (student *)selectstudentwithname:(nsstring *)name age:(nsinteger)age;

//  單例類初始化方法

+ (sqlitemanager *)sharemanager

// 為保證程式執行期間一直存在 所以不手動釋放

// 程式執行結束 自動釋放

return manager;

}

//  需要在靜態去定義乙個指標 (讓這個指標指向的物件 從程式開始到結束 一直存在)

// 程式結束後被系統自動釋放

static sqlite3 *db = nil;

//  開啟資料庫

- (sqlite3 *)opendatabase

// 不存在 則建立乙個並開啟

// 獲取documents的路徑

nsstring *documentspath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];

// 拼接資料庫檔案路徑 (拼接的資料的檔案的名字)

nslog(@"%@",dbpath);

// 建立或者開啟資料庫

// 引數1 檔案路徑(需要把oc的字串轉化成c語言的) dbpath.utf8string

// 引數2 資料庫的位址

// 接收一下返回值 判斷是否開啟成功

int result = sqlite3_open(dbpath.utf8string, &db);

// 用sqlite_ok可以查表得到錯誤

if (result == sqlite_ok) else

return db;

}

//  關閉資料庫

- (void)closedatabaseelse

}

//  建立表(要有主鍵值)

- (void)createtableelse

// 關閉資料庫

[self closedatabase];

}

//  插入資料

- (void)inserttablewithstudent:(student *)stuelse

// 不管插入是否成功 都要釋放跟隨指標

sqlite3_finalize(stmt);

// 關閉資料庫

[self closedatabase];

}*****不繫結進行插入操作******

/** * 如果有data資料進行插入操作 sqlite3_exec函式 會把data資料轉化成字串存入資料庫

* 也就是說你插入的資料沒有data資料 直接使用sqlite3_exec這個函式進行操作 無需使用下面的函式進行繫結

* nsstring *sql = @"insert into student(number, name, gender, age) values('%ld', '%@', '%@', '%ld')";

*///- (void)text:(student *)stu

// 刪除資料(根據乙個條件刪除)

- (void)deletewithage:(nsinteger)ageelse

//

// // 關閉資料庫

// [self closedatabase];

#pragma mark --- 通過繫結刪除法

// 開啟資料庫

db = [self opendatabase];

// 寫sql語句

nsstring *sql = @"delete from student where age > ?";

// 建立跟隨指標

sqlite3_stmt *stmt = nil;

// 預執行sql語句

int result = sqlite3_prepare_v2(db, sql.utf8string, - 1, &stmt, null);

if (result == sqlite_ok) else

// 執行繫結的語句

sqlite3_step(stmt);

// 不管成功與否 都要釋放跟隨指標

sqlite3_finalize(stmt);

// 關閉資料庫

[self closedatabase];

}

//  更新資料(根據乙個條件來更新)

- (void)updateage:(nsinteger)age byname:(nsstring *)nameelse

// 關閉資料庫

[self closedatabase];

}

//  根據條件查詢資料

- (student *)selectstudentwithname:(nsstring *)name age:(nsinteger)age

nslog(@"查詢成功");

}else

// 執行sql語句

sqlite3_step(stmt);

// 釋放跟隨指標

sqlite3_finalize(stmt);

// 關閉資料庫

[self closedatabase];

// 自動釋放 物件

return [stu autorelease];

}

//  查詢所有行(返回乙個陣列)

- (nsarray *)selectallrows

nslog(@"成功");

}else

// 釋放跟隨指標

sqlite3_finalize(stmt);

// 關閉資料庫

[self closedatabase];

return array;

}

初嚐資料庫優化

在前兩天的 期學術交流會上,曹建新學長提到了 對資料的查詢盡量少用 需要用哪個欄位就用相應字段。對此自己產生了點小興趣,便折騰了一下。1.建乙個資料庫testdb create database testdb 2.建一張測試表t test use testdb create table t test...

初 資料庫設計優化

正規化,是關係型資料庫關係模式規範化的標準。第一正規化 1nf 強調的是列的原子性,即列不能夠再分成其他幾列。第二正規化 2nf 首先是 1nf,另外包含兩部分內容,一是表必須有乙個主鍵 二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。第三正規化 3nf 首先是 2nf,另外...

初解資料庫 事務

作為程式猿我們都應該清楚,不管是在求職面試的過程中還是在平常的開發中,資料庫起了很重要的作用,資料庫又分為關係型資料庫和非關係型資料庫。接下來將會介紹一些資料庫方面的基礎知識。提起資料庫我們想到的就是我們常常編寫的一些sql語句,那這些sql語句在執行的過程中,怎麼執行的,什麼時候結束,這時候邊涉及...