SQLite基本了解和使用

2021-06-23 02:49:12 字數 4011 閱讀 6353

sql語句三種分類:dml、ddl、dcl(資料庫控制語言)

ddl 資料庫操作語言:

--建立表:

create table if not exists testtable (field1 text primary key, field2 text not null, field3 text);

--更改表結構,新增乙個新人字段(不能直接刪除字段)

alter table testtable add field4 text;

--刪除表

drop table testtable;

dml 資料庫定義語言 :

--更update testtable set field1 = "update" where field1 = "condition";

--刪delete from testtable where field1 = "condition1" and field2 = "condition2";

delete from testtable where field1 = "condition1" or field2 = "condition2";

--改insert or replace into testtable (field1, field2, field3) values("p1", "p2", "p3");

--查select * from testtable; --所有

select field1, field2 from testtable;

select count(*) from testtable; --數量

select count(distinct(*)) from testtable; --去除重複的數量

//-----------------------------在ios程式設計中使用sql-------------------------------------

在ios程式設計中使用sql:

//使用sqlite資料庫匯入libsqlite3.0.dylib

//並#import //常用方法:

//開啟資料庫

//使用c的函式介面,所以nsstring要使用[string utf8string]

sqlite3_open(const char *filename, sqlite3 **ppdb);

//關閉資料庫

sqlite3_close(sqlite3 *);

//執行sql語句

sqlite3_exec(sqlite3 *, const char *sql, int (*callback)(void *, int, char **, char **), void *, char **errmsg);

//編譯sql語句

sqlite3_prepare_v2(sqlite3 *db, const char *zsql, int nbyte, sqlite3_stmt **ppstmt, const char **pztail);

//執行查詢sql語句

sqlite3_step(sqlite3_stmt *);

//結束sql語句

sqlite3_finalize(sqlite3_stmt *pstmt);

//繫結引數(text是繫結引數型別)

sqlite3_bind_text(sqlite3_stmt *, int, const char *, int n, void (*)(void *));

//查詢欄位上的資料

sqlite3_column_text(sqlite3_stmt *, int icol);

使用sql

- (void)_initsqlite 

//建立表的sql語句

nsstring *sqlstr = @"create table if not exists testtable (field1 text not null primary key, field2 text not null)";

char *error;

//執行sql語句,判斷是否執行成功

if (sqlite3_exec(sqlite, [sqlstr utf8string], null, null, &error) != sqlite_ok)

//----------------------------資料-----------------------

sqlite3_stmt *stmt = nil;

//建立插入資料的sql語句,?表示點位符可逐個填充

nsstring *insertstr = @"insert or replace into testtable (field1, field2) values (?, ?)";

//編譯sql語句

sqlite3_prepare_v2(sqlite, [insertstr utf8string], -1, &stmt, null);

nsstring *field1str = @"first";

nsstring *field2str = @"hehe";

//往sql中填充資料,起始位是1(沒有0)

sqlite3_bind_text(stmt, 1, [field1str utf8string], -1, null);

sqlite3_bind_text(stmt, 2, [field2str utf8string], -1, null);

//執行sql語句

int result = sqlite3_step(stmt);

if (result == sqlite_error || result == sqlite_misuse)

//不用佔位符

nsstring *insertstr2 = @"insert or replace into testtable (field1, field2) values ('second', 'haha')";

sqlite3_prepare_v2(sqlite, [insertstr2 utf8string], -1, &stmt, null);

result = sqlite3_step(stmt);

if (result == sqlite_error || result == sqlite_misuse)

//不用編譯直接執行

nsstring *insertstr3 = @"insert or replace into testtable (field1, field2) values ('third', 'en')";

result = sqlite3_exec(sqlite, [insertstr3 utf8string], null, null, &error);

if (error != nil)

//-------------------------------查詢------------------------------------------

nsstring *searchstr = @"select * from testtable";

sqlite3_stmt *selectstmt = nil;

sqlite3_prepare_v2(sqlite, [searchstr utf8string], -1, &selectstmt, null);

result = sqlite3_step(selectstmt);

//#define sqlite_row         100  /* sqlite3_step() has another row ready */

//#define sqlite_done        101  /* sqlite3_step() has finished executing */

while (result == sqlite_row)

//關閉資料庫控制代碼

sqlite3_finalize(stmt);

sqlite3_finalize(selectstmt);

//關閉資料庫

sqlite3_close(sqlite);

}

iOS之SQLite基本使用

資料庫的特徵 sqlite sqlite近似類似規則 sqlite欄位的約束條件 sqlite欄位約束條件 primary key 主鍵 sqlite語句 ios的資料庫技術的實現 pragma mark 1.引入標頭檔案 新增libsqlite3.0.tbd import static sqlit...

sqlite 的基本使用2

sqlite的運算子有好幾種,算術運算子,比較運算子,邏輯運算子,位運算子 1,算術運算子 算術運算子主要有 取餘 這個很簡單,舉乙個例子就行,要達到這樣的效果需要格式化行輸出 mode line sqlite select20 3 20 3 2sqlite 2,比較運算子 比較運算子,只要學習過語...

Swagger2的基本了解和使用

toc 中極篇 一篇不錯的文章,從基礎到配置到實現寫的很詳細。傳送們 高階篇 mall作者,我從他這學到不少東西,非常感謝!傳送們 註解說明 api 用於修飾controller類,生成controller相關文件資訊 apioperation 用於修飾controller類中的方法,生成介面方法相...