iOS開發中的SQLite知識總結
3.BaseDB.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
// //
BaseDB.m //
SqliteDemo // //
Created by 趙超 on 14-8-26. //
Copyright (c) 2014年 趙超. All rights reserved. // # import "BaseDB.h" @implementation BaseDB /* *
獲取沙盒目錄 *
name:追加的目錄aa * */ -(NSString*)
DataBaseName:(NSString *) name { NSString
*fileName=[NSHomeDirectory() stringByAppendingFormat:@ "/Documents/%@" ,name]; return fileName; } /** *
選擇數據 *
sql:查詢的SQL語句 *
params:查詢SQL語句中的參數 *
dataName:查詢數據庫名稱 */ -(NSMutableArray*)
selectSql:(NSString *)sql parmas:(NSArray *)params dataBaseName:(NSString *)dataName{ sqlite3
*sqlite=nil; sqlite3_stmt
*stmt=nil; //打開數據庫 NSString
*fileName=[self DataBaseName:dataName]; int result=
sqlite3_open([fileName UTF8String], &sqlite); if (result!=SQLITE_OK)
{ NSLog(@ "打開失敗" ); return nil; } const char *
sqlCh=[sql UTF8String]; //編譯SQL語句 sqlite3_prepare_v2(sqlite,
sqlCh, - 1 ,
&stmt, NULL); //綁定參數 for ( int i= 0 ;
i<params.count; i++)= "" {= "" nsstring= "" *param= "[params" objectatindex:i];= "" sqlite3_bind_text(stmt,= "" i+ 1 ,= "" [param= "" utf8string],= "" - 1 ,= "" null );= "" }= "" 執行查詢語句= "" result= "sqlite3_step(stmt);" nsmutablearray= "" *resultdata= "[NSMutableArray" array];= "" 遍歷結果= "" while = "" (result= "=SQLITE_ROW)" nsmutabledictionary= "" *resultrow= "[NSMutableDictionary" dictionary];= "" 獲取字段個數= "" int = "" col_count= "sqlite3_column_count(stmt);" for = "" ( int = "" i= "0;" i<col_count;= "" 獲取字段名稱= "" const = "" char *columname= "sqlite3_column_name(stmt,i);" 獲取字段值= "" char *= "" columvalue= "(char*)" sqlite3_column_text(stmt,= "" i);= "" *columkeystr= "[NSString" stringwithcstring:columname= "" encoding:nsutf8stringencoding];= "" *columvaluestr= "[NSString" stringwithcstring:columvalue= "" [resultrow= "" setobject:columvaluestr= "" forkey:columkeystr];= "" [resultdata= "" addobject:resultrow];= "" 關閉數據庫句柄= "" sqlite3_finalize(stmt);= "" 關閉數據庫= "" sqlite3_close(sqlite);= "" nslog(@ "查詢完!" );= "" return = "" resultdata;= "" **= "" *= "" 執行sql語句,主要完成增加、修改、刪除= "" sql:執行的sql語句= "" params:sql語句中的參數= "" dataname:數據庫名稱= "" -(bool)= "" execsql:(nsstring= "" *)sql= "" parmas:(nsarray= "" *)params= "" databasename:(nsstring= "" *)dataname{= "" sqlite3= "" *sqlite= "nil;" sqlite3_stmt= "" *stmt= "nil;" 打開數據庫= "" *filename= "[self" databasename:dataname];= "" &sqlite);= "" if = "" (result!= "SQLITE_OK)" nslog(@ "打開失敗" );= "" no;= "" sqlch= "[sql" utf8string];= "" 編譯sql語句= "" sqlite3_prepare_v2(sqlite,= "" sqlch,= "" &stmt,= "" 綁定參數= "" i<params.count;= "" *parm= "[params" [parm= "" 執行sql= "" ||= "" nslog(@ "執行sql語句失敗" );= "" nslog(@ "執行成功!" );= "" yes;= "" 創建一個表= "" -( void )createtable:(nsstring= "" } else {= "" error;= "" null ,= "" &error);= "" nslog(@ "創建失敗" );= "" nslog(@ "%s" ,error);= "" ;= "" nslog(@ "創建成功" );= "" @end = "" <= "" pre= "" ><br> <h3> 4 .調用格式</h3> <pre class = "brush:java;" > BaseDB
*db=[[BaseDB alloc] init]; //創建表 NSString
*dbCreate=@ "create
table zhaochao( username text primary key,userPasswd test)" ; NSString
*dbName=@ "zhaochao.sqlite" ; //
[db createTable:dbCreate dataBaseName:dbName]; //添加數據 NSString
*insertTable=@ "insert
into zhaochao (username,userPasswd) values (?,?)" ; NSArray
*insertParmas=@[@ "acasdfaa" ,@ "bb" ]; //
[db execSql:insertTable parmas:insertParmas dataBaseName:@"zhaochao.sqlite"]; //修改數據 NSString
*updateTable=@ "update
zhaochao set username=? where username=?" ; NSArray
*updateParams=@[@ "admin" ,@ "zhaochao" ]; //
[db execSql:updateTable parmas:updateParams dataBaseName:@"zhaochao.sqlite"]; //刪除數據 NSString
*deleteTable=@ "delete
from zhaochao where username=?" ; NSArray
*deleteParams=@[@ "aa" ]; //
[db execSql:deleteTable parmas:deleteParams dataBaseName:@"zhaochao.sqlite"]; //查詢數據 NSString
*selectTable=@ "select
username,userPasswd from zhaochao where userPasswd=?" ; NSString
*selectParam=@[@ "bb" ]; NSArray
*result=[db selectSql:selectTable parmas:selectParam dataBaseName:@ "zhaochao.sqlite" ]; for ( int i= 0 ;
i<result.count; i++)= "" {= "" nsmutabledictionary= "" *arr= "[result" objectatindex:i];= "" nslog(@ "%@" ,arr);= "" }= "" <= "" pre= "" ><br> <br> <br>
</result.count;></pre></params.count;>
|