IOS sqlite資料庫增刪改查,iossqlite

來源:互聯網
上載者:User

IOS sqlite資料庫增刪改查,iossqlite
1.簡介簡單封裝sqlite資料庫操作類 BaseDB 用於完成對sqlite的增刪改查,使用前先匯入libsqlite3.0.dylib庫2.BaseDB.h

////  BaseDB.h//  SqliteDemo////  Created by 趙超 on 14-8-26.//  Copyright (c) 2014年 趙超. All rights reserved.//#import <Foundation/Foundation.h>#import "sqlite3.h"@interface BaseDB : NSObject/** *  建立一個表 *  sql:執行的SQL語句 *  dataName:資料庫名稱 */-(void) createTable:(NSString*)sql dataBaseName:(NSString*) dataName;/** *  執行SQL語句,主要完成增加、修改、刪除 *  sql:執行的SQL語句 *  params:SQL語句中的參數 *  dataName:資料庫名稱 */-(BOOL) execSql:(NSString*)sql parmas:(NSArray*) params dataBaseName:(NSString*)dataName;/** *  選擇資料 *  sql:查詢的SQL語句 *  params:查詢SQL語句中的參數 *  dataName:查詢資料庫名稱 */-(NSMutableArray*) selectSql:(NSString*)sql parmas:(NSArray*) params dataBaseName:(NSString*)dataName;@end
建立的資料庫檔案位於 /Users/zhaochao/Library/Application Support/iPhone Simulator/7.1/Applications/07D17328-B63C-4D87-9B6C-03AA5CD681EA/Documents/zhaochao.sqlite,就是 NSString *fileName=[NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",name]; 這個目錄。檔案可以直接用SQLiteManager軟體開啟,也可以在firefox瀏覽器中安裝sqlitemanager外掛程式開啟,如
3.BaseDB.m
////  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; i++) {             //擷取欄位名稱            const char*columName=sqlite3_column_name(stmt,i);            //擷取欄位值            char* columValue=(char*) sqlite3_column_text(stmt, i);            NSString  *columkeyStr=[NSString stringWithCString:columName encoding:NSUTF8StringEncoding];            NSString *columValueStr=[NSString stringWithCString:columValue encoding:NSUTF8StringEncoding];            [resultRow setObject:columValueStr forKey:columkeyStr];        }        [resultData addObject:resultRow];        result=sqlite3_step(stmt);    }    //關閉資料庫控制代碼    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;    //開啟資料庫    NSString *fileName=[self DataBaseName:dataName];    int result= sqlite3_open([fileName UTF8String], &sqlite);    if (result!=SQLITE_OK) {        NSLog(@"開啟失敗");        return NO;    }    const char* sqlCh=[sql UTF8String];    //編譯SQL語句    sqlite3_prepare_v2(sqlite, sqlCh, -1, &stmt, NULL);    //綁定參數    for (int i=0; i<params.count; i++) {        NSString *parm=[params objectAtIndex:i];        sqlite3_bind_text(stmt, i+1, [parm UTF8String], -1, NULL);    }    //執行SQL    result=sqlite3_step(stmt);    if (result==SQLITE_ERROR || result==SQLITE_MISUSE) {        NSLog(@"執行SQL語句失敗");        sqlite3_close(sqlite);        return  NO;    }    //關閉資料庫控制代碼    sqlite3_finalize(stmt);    //關閉資料庫    sqlite3_close(sqlite);    NSLog(@"執行成功!");    return YES;}/** *  建立一個表 *  sql:執行的SQL語句 *  dataName:資料庫名稱 */-(void)createTable:(NSString *)sql dataBaseName:(NSString *)dataName{    sqlite3 *sqlite=nil;    NSString *fileName=[self DataBaseName:dataName];    //開啟資料庫    int result= sqlite3_open([fileName UTF8String], &sqlite);    if (result!=SQLITE_OK) {        NSLog(@"開啟失敗");    }else{        const char* sqlCh=[sql UTF8String];        char* error;        //執行SQL        int result=sqlite3_exec(sqlite, sqlCh, NULL, NULL, &error);        if (result!=SQLITE_OK) {            NSLog(@"建立失敗");            NSLog(@"%s",error);            sqlite3_close(sqlite);            return ;        }        //關閉資料庫        sqlite3_close(sqlite);        NSLog(@"建立成功");    }    }@end

4.調用格式
        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);    }        




C#NET,程式怎實現與SQLITE資料庫的串連?以及增刪改查的功可以?

先下載ADO.NET2.0 Provider for SQLite。下載binaries zip版就可以了。下載完後解壓縮,可以在bin目錄下找到System.Data.SQLite.DLL。在vs2008中用Add Reference功能把System.Data.SQLite.DLL加到工程裡就可以了。運行下面代碼試試:
string datasource = "e:/tmp/test.db";
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
//串連資料庫
System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
connstr.DataSource = datasource;
connstr.Password = "admin";//設定密碼,SQLite ADO.NET實現了資料庫密碼保護
conn.ConnectionString = connstr.ToString();
conn.Open();
//建立表
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
cmd.CommandText = sql;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
//插入資料
sql = "INSERT INTO test VALUES('a','b')";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
//取出資料
sql = "SELECT * FROM test";
cmd.CommandText = sql;
System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
StringBuilder sb = new StringBuilder();
while (reader.Read())
{
sb.Append("username:").Append(reader.GetString(0)).Append("\n")
.Append("password:").Append(reader.GetString(1));
}
MessageBox.Show(sb.ToString());...餘下全文>>
 
用SQL語句隨便寫一條資料庫增刪改查語句

表名: person
欄位: id, name, age
1 張三 20
2 李四 22
3 王五 23

查詢: select id,name,age from person;
刪除: delete from person where id=1 (刪除ID=1的那條資料,)
delete from person (刪除person表中的所有資料);
修改: update person set name="劉德華" where id=2; (就會李四的名字改成劉德華);
增加: insert into person values(4,'趙六',24);
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.