現在如果使用SQLite話就用coreData。你那個功能就是做個分頁,跟資料庫的存儲沒有關系。別把數據Data存儲在資料庫中,這樣會使資料庫變的很大,並且讀取很不方便。把地址或者網址存儲下來,然後顯示出來就是了。
2. ios 怎麼打開sqlite資料庫
ITJOB題庫中也有這道題,大概過程是這樣。新建Empty Appliation,添加一個HomeViewController,和一個組件libsqlite3.dylib,來支持對sqlite3的連接,關閉,增刪改查等操作。
1. HomeViewController.h代碼:
#import <UIKit/UIKit.h>
#import "sqlite3.h"
@interface HomeViewController : UIViewController{
sqlite3 *db; //聲明一個sqlite3資料庫
}
- (NSString *)filePath;//資料庫文件的路徑。一般在沙箱的Documents里邊操作
@end
2. HomeViewController.m代碼:
#import "HomeViewController.h"
@interface HomeViewController ()
@end
@implementation HomeViewController
//該方法用於返回資料庫在Documents文件夾中的全路徑信息
- (NSString *)filePath{
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir :@"Contacts.sqlite"];
}
//打開資料庫的方法
- (void)openDB{
if (sqlite3_open([[self filePath] UTF8String], &db) != SQLITE_OK) {
sqlite3_close(db);
NSAssert(0, @"資料庫打開失敗。");
}
}
- (void)getAllContacts{
NSString *sql = @"SELECT * FROM members";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
char *name = (char *)sqlite3_column_text(statement, 0);
NSString *nameStr = [[NSString alloc] initWithUTF8String:name];
char *email = (char *)sqlite3_column_text(statement, 1);
NSString *emailStr = [[NSString alloc] initWithUTF8String:email];
char *birthday = (char *)sqlite3_column_text(statement, 2);
NSString *birthdayStr = [[NSString alloc] initWithUTF8String:birthday];
NSString *info = [[NSString alloc] initWithFormat:@"%@ - %@ - %@",
nameStr, emailStr, birthdayStr];
NSLog(info);
[nameStr release];
[emailStr release];
[birthdayStr release];
[info release];
}
sqlite3_finalize(statement);
}
}
3. ios中的 sqlite跟sqlserver遠程資料庫怎麼鏈接想進行數據交互的,不用介面,
我只是過來做任務的
4. iOS 開發中,可以實現app直接連接伺服器上的mysql資料庫直接取數據么
理論上是可以直接讀取資料庫的,相當於遠程連接著數據。簡單說明一下,就是用客戶端組件,設置資料庫地址、埠、用戶、密碼,然後直接select update,把命令提交到資料庫。
但問題在於資料庫的信息,用戶密碼存儲在客戶端,容易給反編譯出來(難度這個我不清楚,你做ios開發可能清楚點)。而當發生安全問題的時候,要改密碼或者資料庫地址,麻煩事就來了,總不能讓用戶再升級一次(ios的發布期你也知道)。
此外還要考慮數據在傳輸過程中是否加密,是否證書方式,現在的網路,劫持植入廣告滿街都是。好像蘋果那邊有限制今後的新軟體要ssl才行。
5. IOS能直連SQL Server嗎
首先IOS是一個手機系統,要想連接sqlserver不是不可以但是不是直接連的,可以通過服務端,然後讓服務端連接sqlserver資料庫,這樣間接的連接sqlserver。
6. ios中使用資料庫應注意什麼
iPhone中資料庫使用方法是本文要介紹的內容,直接進入話題介紹,iPhone 中使用名為 SQLite 的資料庫管理系統。它是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,
在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如 Tcl、PHP、Java 等,還有 ODBC 介面,同樣比起 Mysql、PostgreSQL 這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。
其使用步驟大致分為以下幾步:
1. 創建DB文件和表格
2. 添加必須的庫文件(FMDB for iPhone, libsqlite3.0.dylib)
3. 通過 FMDB 的方法使用 SQLite
創建DB文件和表格
$ sqlite3 sample.db sqlite> CREATE TABLE TEST( ...> id INTEGER PRIMARY KEY, ...> name VARCHAR(255) ...> );
簡單地使用上面的語句生成資料庫文件後,用一個圖形化SQLite管理工具,比如 Lita 來管理還是很方便的。
然後將文件(sample.db)添加到工程中。
添加必須的庫文件(FMDB for iPhone, libsqlite3.0.dylib)
首先添加 Apple 提供的 sqlite 操作用程序庫 ibsqlite3.0.dylib 到工程中。位置如下
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${VER}.sdk/usr/lib/libsqlite3.0.dylib
這樣一來就可以訪問資料庫了,但是為了更加方便的操作資料庫,這里使用 FMDB for iPhone。
svn co http://flycode.googlecode.com/svn/trunk/fmdb fmdb
如上下載該庫,並將以下文件添加到工程文件中:
FMDatabase.h FMDatabase.m FMDatabaseAdditions.h FMDatabaseAdditions.m FMResultSet.h FMResultSet.m
通過 FMDB 的方法使用 SQLite
使用 SQL 操作資料庫的代碼在程序庫的 fmdb.m 文件中大部分都列出了、只是連接資料庫文件的時候需要注意 — 執行的時候,參照的資料庫路徑位於 Document 目錄下,之前把剛才的 sample.db 文件拷貝過去就好了。
位置如下
/Users/xxxx/Library/Application Support/iPhone Simulator/User/Applications/xxxx/Documents/sample.db
BOOL success; NSError *error; NSFileManager *fm = [NSFileManager defaultManager]; NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *writableDBPath = [documentsDirectory :@"sample.db"]; success = [fm fileExistsAtPath:writableDBPath]; if(!success){ NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] :@"sample.db"]; success = [fm ItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; if(!success){ NSLog([error localizedDescription]); } } // 連接DB FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath]; if ([db open]) { [db setShouldCacheStatements:YES]; // INSERT [db beginTransaction]; int i = 0; while (i++ < 20) { [db executeUpdate:@"INSERT INTO TEST (name) values (?)" , [NSString stringWithFormat:@"number %d", i]]; if ([db hadError]) { NSLog(@"Err %d: %@", [db lastErrorCode], [db lastErrorMessage]); } } [db commit]; // SELECT FMResultSet *rs = [db executeQuery:@"SELECT * FROM TEST"]; while ([rs next]) { NSLog(@"%d %@", [rs intForColumn:@"id"], [rs stringForColumn:@"name"]); } [rs close]; [db close]; }else{ NSLog(@"Could not open db."); }
7. iOS 便捷使用資料庫 / Use Core Data
2.創建數據模塊
3.創建對應的類
這時候創建不是右鍵創建,通過主菜單 Editor -> Create NSManagedObject Subclass
4.自動會為數據模塊創建兩個類文件
6.添加數據
8. ios/ois的七層網路體系結構的每一層的功能和代表協議
應用層(Application layer)
表示層(Presentation layer)
會話層(Session layer)
傳輸層(Transport layer)
網路層(Network layer)
數據鏈路層(Data link layer)
物理層(Physical layer)
其中上三層稱之為高層,定義應用程序之間的通信和人機界面。什麼意思呢,就是上三層負責把電腦能看懂的東西轉化為你能看懂的東西,或把你能看懂的東西轉化為電腦能看懂的東西。
下四層稱之為底層,定義的是數據如何端到端的傳輸(end-to-end),物理規范以及數據與光電信號間的轉換。
下面一層一層的來說明物理層
物理層是OSI/ISO的第一層,它雖然處於最底層,卻是整個開放系統的基礎。物理層為設備之間的數據通信提供傳輸媒體及互連設備,為數據傳輸提供可靠的環境。
物理層的主要功能
為數據端設備提供傳送數據的通路,數據通路可以是一個物理媒體,也可以是多個物理媒體連接而成.一次完整的數據傳輸,包括激活物理連接,傳送數據,終止物理連接.所謂激活,就是不管有多少物理媒體參與,都要在通信的兩個數據終端設備間連接起來,形成一條通路。
傳輸數據.物理層要形成適合數據傳輸需要的實體,為數據傳送服務.一是要保證數據能在其上正確通過,二是要提供足夠的帶寬(帶寬是指每秒鍾內能通過的比特(BIT)數),以減少信道上的擁塞。傳輸數據的方式能滿足點到點,一點到多點,串列或並行,半雙工或全雙工,同步或非同步傳輸的需要。完成物理層的一些管理工作。
物理層的一些重要標准
物理層的一些標准和協議早在OSI/TC97/C16 分技術委員會成立之前就已制定並在應用了,OSI也制定了一些標准並採用了一些已有的成果。下面將一些重要的標准列出,以便讀者查閱。
ISO2110:稱為"數據通信----25芯DTE/DCE介面連接器和插針分配"。它與EIA(美國電子工業協會)的"RS-232-C"基本兼容。
ISO2593:稱為"數據通信----34芯DTE/DCE----介面連接器和插針分配"。
ISO4092:稱為"數據通信----37芯DTE/DEC----介面連接器和插針分配"。與EIARS-449兼容。
CCITT V.24:稱為"數據終端設備(DTE)和數據電路終接設備之間的介面電路定義表"。其功能與EIARS-232-C及RS-449兼容於100序列線上.
數據鏈路層
數據鏈路可以粗略地理解為數據通道。物理層要為終端設備間的數據通信提供傳輸媒體及其連接。媒體是長期的,連接是有生存期的。在連接生存期內,收發兩端可以進行不等的一次或多次數據通信。每次通信都要經過建立通信聯絡和拆除通信聯絡兩過程。這種建立起來的數據收發關系就叫作數據鏈路。而在物理媒體上傳輸的數據難免受到各種不可靠因素的影響而產生差錯,為了彌補物理層上的不足,為上層提供無差錯的數據傳輸,就要能對數據進行檢錯和糾錯。數據鏈路的建立、拆除,對數據的檢錯、糾錯是數據鏈路層的基本任務。
鏈路層的主要功能:
鏈路連接的建立,拆除,分離。
幀定界和幀同步。鏈路層的數據傳輸單元是幀。協議不同。幀的長短和界面也有差別,但無論如何必須對幀進行定界。
順序控制。指對幀的收發順序的控制。
差錯檢測和恢復。還有鏈路標識,流量控制等等.差錯檢測多用方陣碼校驗和循環碼校驗來檢測信道上數據的誤碼,而幀丟失等用序號檢測.各種錯誤的恢復則常靠反饋重發技術來完成。
數據鏈路層的主要協議
數據鏈路層協議是為發對等實體間保持一致而制定的,也為了順利完成對網路層的服務。主要協議如下:
ISO1745--1975:"數據通信系統的基本型控制規程"。這是一種面向字元的標准,利用10個控制字元完成鏈路的建立,拆除及數據交換。對幀的收發情況及差錯恢復也是靠這些字元來完成。
ISO1155, ISO1177, ISO2626, ISO2629等標準的配合使用可形成多種鏈路控制和數據傳輸方式。
ISO3309--1984:稱為"HDLC 幀結構"。
ISO4335--1984:稱為"HDLC 規程要素"。
ISO7809--1984:稱為"HDLC 規程類型匯編"。這3個標准都是為面向比特的數據傳輸控制而制定的.有人習慣上把這3個標准組合稱為高級鏈路控制規程。
ISO7776:稱為"DTE數據鏈路層規程"。與CCITT X.25LAB"平衡型鏈路訪問規程"相兼容。
鏈路層產品
獨立的鏈路產品中最常見的當屬網卡,網橋也是鏈路產品。MODEM的某些功能有人認為屬於鏈路層,對些還有爭議。數據鏈路層將本質上不可靠的傳輸媒體變成可靠的傳輸通路提供給網路層。在IEEE802.3情況下,數據鏈路層分成了兩個子層,一個是邏輯鏈路控制,另一個是媒體訪問控制。下圖所示為IEEE802.3LAN體系結構。
AUI=連接單元介面 PMA=物理媒體連接
MAU=媒體連接單元 PLS=物理信令
MDI=媒體相關接
網路層
網路層的產生也是網路發展的結果.在聯機系統和線路交換的環境中,網路層的功能沒有太大意義.當數據終端增多時。它們之間有中繼設備相連。此時會出現一台終端要求不只是與唯一的一台而是能和多台終端通信的情況,這就是產生了把任意兩台數據終端設備的數據鏈接起來的問題,也就是路由或者叫尋徑。另外,當一條物理信道建立之後,被一對用戶使用,往往有許多空閑時間被浪費掉。人們自然會希望讓多對用戶共用一條鏈路,為解決這一問題就出現了邏輯信道技術和虛擬電路技術。
網路層主要功能
網路層為建立網路連接和為上層提供服務,應具備以下主要功能:
路由選擇和中繼
激活,終止網路連接
在一條數據鏈路上復用多條網路連接,多採取分時復用技術
差錯檢測與恢復
排序,流量控制
服務選擇
網路管理
網路層的一些主要標准如下:
ISO.DIS8208:稱為"DTE用的X.25分組級協議"
ISO.DIS8348:稱為"CO 網路服務定義"(面向連接)
ISO.DIS8349:稱為"CL 網路服務定義"(面向無連接)
ISO.DIS8473:稱為"CL 網路協議"
ISO.DIS8348:稱為"網路層定址"
除上述標准外,還有許多標准。這些標准都只是解決網路層的部分功能,所以往往需要在網路層中同時使用幾個標准才能完成整個網路層的功能。由於面對的網路不同,網路層將會採用不同的標准組合。
。
在具有開放特性的網路中的數據終端設備,都要配置網路層的功能。現在市場上銷售的網路硬設備主要有網關和路由器。
傳輸層
傳輸層是兩台計算機經過網路進行數據通信時,第一個端到端的層次,具有緩沖作用。當網路層服務質量不能滿足要求時,它將服務加以提高,以滿足高層的要求;當網路層服務質量較好時,它只用很少的工作。傳輸層還可進行復用,即在一個網路連接上創建多個邏輯連接。傳輸層也稱為運輸層。傳輸層只存在於端開放系統中,是介於低3層通信子網系統和高3層之間的一層,但是很重要的一層。因為它是源端到目的端對數據傳送進行控制從低到高的最後一層。
有一個既存事實,即世界上各種通信子網在性能上存在著很大差異。例如電話交換網,分組交換網,公用數據交換網,區域網等通信子網都可互連,但它們提供的吞吐量,傳輸速率,數據延遲通信費用各不相同。對於會話層來說,卻要求有一性能恆定的界面。傳輸層就承擔了這一功能。它採用分流/合流,復用/介復用技術來調節上述通信子網的差異,使會話層感受不到。
此外傳輸層還要具備差錯恢復,流量控制等功能,以此對會話層屏蔽通信子網在這些方面的細節與差異.傳輸層面對的數據對象已不是網路地址和主機地址,而是和會話層的界面埠。上述功能的最終目的是為會話提供可靠的,無誤的數據傳輸。傳輸層的服務一般要經歷傳輸連接建立階段,,數據傳送階段,傳輸連接釋放階段3個階段才算完成一個完整的服務過程。而在數據傳送階段又分為一般數據傳送和加速數據傳送兩種。傳輸層服務分成5種類型。基本可以滿足對傳送質量,傳送速度,傳送費用的各種不同需要。
傳輸層的協議標准有以下幾種:
ISO8072:稱為"面向連接的傳輸服務定義"
ISO8072:稱為"面向連接的傳輸協議規范"
會話層
會話層提供的服務可使應用建立和維持會話,並能使會話獲得同步。會話層使用校驗點可使通信會話在通信失效時從校驗點繼續恢復通信。這種能力對於傳送大的文件極為重要。會話層,表示層,應用層構成開放系統的高3層,面對應用進程提供分布處理,對話管理,信息表示,恢復最後的差錯等.會話層同樣要擔負應用進程服務要求,而運輸層不能完成的那部分工作,給運輸層功能差距以彌補.主要的功能是對話管理,數據流同步和重新同步。要完成這些功能,需要由大量的服務單元功能組合,已經制定的功能單元已有幾十種,現將會話層主要功能介紹如下。
為會話實體間建立連接。為給兩個對等會話服務用戶建立一個會話連接,應該做如下幾項工作:
將會話地址映射為運輸地址
選擇需要的運輸服務質量參數(QOS)
對會話參數進行協商
識別各個會話連接
傳送有限的透明用戶數據
數據傳輸階段
這個階段是在兩個會話用戶之間實現有組織的,同步的數據傳輸。用戶數據單元為SSDU,而協議數據單元為SPDU。會話用戶之間的數據傳送過程是將SSDU轉變成SPDU進行的。
連接釋放
連接釋放是通過"有序釋放"、"廢棄"、"有限量透明用戶數據傳送"等功能單元來釋放會話連接的。會話層標准為了使會話連接建立階段能進行功能協商,也為了便於其它國際標准參考和引用,定義了12種功能單元.各個系統可根據自身情況和需要,以核心功能服務單元為基礎,選配其他功能單元組成合理的會話服務子集。
會話層的主要標准有"DIS8236:會話服務定義"和"DIS8237:會話協議規范"。
表示層
表示層的作用之一是為異種機通信提供一種公共語言,以便能進行互操作。這種類型的服務之所以需要,是因為不同的計算機體系結構使用的數據表示法不同。例如,IBM主機使用EBCDIC編碼,而大部分PC機使用的是ASCII碼。在這種情況下,便需要會話層來完成這種轉換。通過前面的介紹,我們可以看出,會話層以下5層完成了端到端的數據傳送,並且是可靠,無差錯的傳送。但是數據傳送只是手段而不是目的,最終是要實現對數據的使用。由於各種系統對數據的定義並不完全相同,最易明白的例子是鍵盤,其上的某些鍵的含義在許多系統中都有差異。這自然給利用其它系統的數據造成了障礙。表示層和應用層就擔負了消除這種障礙的任務。
對於用戶數據來說,可以從兩個側面來分析,一個是數據含義被稱為語義,另一個是數據的表示形式,稱做語法。像文字、圖形、聲音、文種、壓縮、加密等都屬於語法范疇。表示層設計了3類15種功能單位,其中上下文管理功能單位就是溝通用戶間的數據編碼規則,,以便雙方有一致的數據形式,能夠互相認識。ISO表示層為服務、協議、文本通信符制定了DP8822、DP8823、DIS6937/2等一系列標准。
應用層
應用層向應用程序提供服務,這些服務按其向應用程序提供的特性分成組,並稱為服務元素。有些可為多種應用程序共同使用,有些則為較少的一類應用程序使用。應用層是開放系統的最高層,是直接為應用進程提供服務的。其作用是在實現多個系統應用進程相互通信的同時,完成一系列業務處理所需的服務.其服務元素分為兩類:公共應用服務元素CASE和特定應用服務元素SASE.CASE提供最基本的服務,它成為應用層中任何用戶和任何服務元素的用戶,主要為應用進程通信,分布系統實現提供基本的控制機制。特定服務SASE則要滿足一些特定服務,如文卷傳送、訪問管理、作業傳送、銀行事務、訂單輸入等。
這些將涉及到虛擬終端、作業傳送與操作、文卷傳送及訪問管理、遠程資料庫訪問、圖形核心系統、開放系統互連管理等等。
應用層的標准有DP8649"公共應用服務元素"、DP8650"公共應用服務元素用協議"、文件傳送、訪問和管理服務及協議