當前位置:首頁 » 服務存儲 » 用戶存儲數據的選擇
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

用戶存儲數據的選擇

發布時間: 2022-09-14 08:49:56

A. 什麼存儲介質能夠更好地保存你的資料

現代人幾乎每天都要與計算機打交道,不論是智能手機、平板還是桌面PC,涵蓋了工作、生活、娛樂方方面面。這就意味著:數據和資料已經完全數字化。

顯然,在整個計算機的發展歷程中,存儲介質也扮演著重要的角色。20年前,你需要使用一個容量不到3MB的軟盤來存儲文檔數據;現在,128GB的U盤已經非常常見,還有TB級別的硬碟、藍光光碟甚至是海量雲端空間可以選擇。而對於網齡達到10年以上的用戶來說,無疑也是經歷著這種數據存儲介質的巨變。那麼,你還能找到各種老照片、經典電影或是10年前的筆記嗎?它們是存儲在軟盤、光碟、硬碟還是你的QQ空間中?

這就給我們帶來了一個問題。如果你想完美保存下一個10年的數據和資料,你應該選擇什麼存儲介質?

存儲介質很重要

如何選擇存儲介質,很大一部分關繫到存儲成本。現在,我們基本上有以下不同成本、不同形式的存儲介質可以選擇:

光碟

目前,CD/DVD/藍光光碟十分普及,單面容量從700MB、4.7GB到25GB,價格也不盡相同,一般DVD光碟不到1元錢、單面藍光光碟則在3.5元左右。另外,一般的低價筆記本、台式機都配備了DVD刻錄機、高端影音PC則配備了藍光光碟機,你可以根據自己的預算來進行選擇。

不過,要想把光碟保存10年,可並不容易。即便諸如索尼、松下等廠商宣布藍光光碟未來容量可達1TB、保存時間長達50年,但這種技術的穩定性依然令人失望。普遍來說,一般空白光碟的壽命不到5年;而高檔、新技術光碟的價格則十分昂貴,並不值得投入。

機械硬碟

傳統機械硬碟目前已經突破TB容量級別,相比光碟擁有更大容量和更快的讀寫速度速度。不過,由於機械結構和電路復雜,介面變化較快,同時壽命基本上在8年左右,所以即便機械硬碟的價格已經十分低廉,依然不是一個最好的存儲介質。

固態硬碟

固態硬碟是目前高端電腦主要配備的存儲介質,雖然價格昂貴,但存儲速度更快、沒有機械部件的設計理論上也更適合長時間保存數據。不過,實際的應用體驗似乎並非如此,由於快閃記憶體的記憶細胞會因為限制而會失去電荷,最終導致數據丟失,所以固態硬碟並非完美。

那麼雲存儲和社交媒體呢?

雲存儲是21世紀科技廠商的新發明,包括微軟、谷歌、蘋果等巨頭都擁有自己的雲服務,各種其他互聯網廠商也都涉足雲技術領域。顯然,將資料上傳至雲端,可以在任何地方下載到設備中,這種存儲機制聽上去是很完美的,無需擔心天災人禍導致數據丟失。

至於成本,感覺上是比較昂貴的。比如蘋果iColud,50GB的年存儲價格需要600多元,同時由於系統的顯著,你無法使用更便宜的第三方雲服務來備份其系統文件(僅限照片、視頻、文檔等用戶數據)。即便是價格便宜的第三方雲服務,數據格式可能也會受到限制。當然,你還要擔心網路的安全性和被黑客侵入的可能,但總得來說,雲服務在目前來看是一個明智的選擇。

與雲服務相似,社交媒體也可以作為一種在線備份的形式,如相冊、消息等,當然社交媒體的文件類型和服務限制更多,另外一些社交媒體也允許用戶通過谷歌等雲服務來備份數據。

最好的數據存儲解決方案

在任何存儲介質都不太完美的情況下,我們認為最好的方式便是根據需求選擇混合形式,比如:

·定期備份:將電腦數據保存在硬碟里

·多個文件備份:諸如照片、視頻、文檔保存在可靠的雲空間及狀態良好的硬碟中

·將物理存儲介質放在合適的地方:諸如光碟、硬碟都要避免陽光暴曬,溫度也要合適。

·考慮加密文件:可以通過一些軟體將文件內容加密後再存儲,實現更安全的存儲形式。

B. 請問RFID標簽用戶區數據具體是怎麼存儲的,以及移動讀寫器如何與javaWeb程序交互

數據塊寫操作
選擇標簽(圖3-1中1),選擇存儲區(圖3-1中2,只有EPC區和用戶區可以寫入數據),填寫起始地址和讀取長度(圖3-1中3),註: 起始地址:0x00 表示從第一個字(相應存儲區第一個16位)開始讀,0x01表示從第2個字開始讀,依次類推。讀長度:要讀取的字的個數。不能為0x00,不能超過120,即最多讀取120個字。若設置為0或者超過了120,將返回參數出錯的消息。訪問密碼:從左到右為從高位到低位,2字的訪問密碼的最高位在第一字,如果電子標簽沒有設置訪問密碼,則訪問密碼部分可以為任意值,但不能缺失。填寫需要寫入的數據(圖3-1中4),點擊寫(圖3-1中5),左下角看到「寫數據」按鈕執行成功,點擊「讀」按鈕則右邊框中顯示讀取到的數據(圖3-1中6 ),點擊「清除顯示」即可清空數據顯示區內容。
詳情請見 http://wenku..com/view/af1169e3f524ccbff121844a 第十四頁
如果需要在web調用讀寫 需要編寫瀏覽器的OCX文件

C. Oracle數據選擇查詢和數據存儲

首先,建立一個 DBLINK

目標表是在 orcl 實例上面的, 那麼,需要在 oracl 那裡,建立一個 client 實例的 DBLINK。

DBLINK 的創建的例子如下:
建立一個名字叫 mydblink 的 DBLINK
這個鏈接是 使用 test 作為用戶名, test1234567 作為密碼
連接到 192.168.1.210 這台機器 的 1521 埠
目標資料庫的服務名為 orcl

sql> CREATE DATABASE LINK mydblink
2 CONNECT TO test IDENTIFIED BY test1234567
3 USING '(DESCRIPTION =
4 (ADDRESS_LIST =
5 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.210)(PORT = 1521)))
6 (CONNECT_DATA = (SERVICE_NAME = orcl)
7 )
8 )';

Database link created.

SQL> select count(1) from user_tables@mydblink;

COUNT(1)
----------
6

DBLINK 創建完畢後

在 orcl 那裡
執行

CREATE TABLE B
AS
SELECT
a1,a2, a3, a4,a7,a8, a9, a10, a11,
CASE
WHEN (a1='x' OR a2='x' OR a3='x' OR a4='x') THEN 'x'
WHEN (a1='O' OR a2='O' OR a3='O' OR a4='O'
AND a1!='x' AND a2!='x' AND a3!='x' AND a4!='x') THEN 'O'
WHEN (a1='√' AND a2='√' AND a3='√' AND a4='√') THEN '√'
ELSE '?'
END AS b1
FROM
A@你前面創建的對於client的dblink.

上面的 SQL, 只演示一下,怎麼處理:

其中b1存的值由如下規則確定:
該值與欄位a1,a2, a3, a4的值有關, 即在欄位a1,a2, a3, a4同一行的值中,只要有一個為字元"×", 則b1在該行中存為"×",
如果欄位a1,a2, a3, a4同一行的值中,只要有一個為字元"〇",但沒有出現"×", 則b1在該行中存為"〇",
如果欄位a1,a2, a3, a4同一行的值中全部為"√", 則b1在該行中存為"√".

我測試的時候,是英文版的Oracle, 那個〇 處理不了,就用 O 代替了。

注意:請不要在 實例client 那裡,建立一個 orcl 的dblink,然後 執行這樣的語句:

SQL> CREATE TABLE B@mydblink
2 AS
3 SELECT
4 a1,a2, a3, a4,a7,a8, a9, a10, a11,
5 CASE
6 WHEN (a1='x' OR a2='x' OR a3='x' OR a4='x') THEN 'x'
7 WHEN (a1='O' OR a2='O' OR a3='O' OR a4='O'
8 AND a1!='x' AND a2!='x' AND a3!='x' AND a4!='x') THEN 'O'
9 WHEN (a1='√' AND a2='√' AND a3='√' AND a4='√') THEN '√'
10 ELSE '?'
11 END AS b1
12 FROM
13 A;
CREATE TABLE B@mydblink
*
ERROR at line 1:
ORA-02021: DDL operations are not allowed on a remote database

D. 要怎麼保存數據

保存數據,方法如下
1,數據分類

你要把自己想要長期有效保存的數據先分類清楚,等級劃分為核心數據、重要數據、普通數據三個類型。然後依據不同層次的數據對可靠性的要求,再制定出對應的方法。



2/6

壓縮存儲空間

需要保存的數據可能有word、圖片、音頻、視頻等各種類型的文件,可以把其都格式轉換成空間較小的格式,這樣我們能存儲更多的數據。



3/6

選擇存儲介質

其實保存數據有很多方法,比如光碟、硬碟、機械硬碟、網盤,所以如果您有一定資金建議您選擇更安全的存儲介質。



4/6

定期查看

不管你存放的任何的介質中,您如果要長期保存數據,就要定期查看一下。適當的維護一下,如果有漏洞就要進行修復。



5/6

重要的數據要備份

重要的數據不是能只有一份,你要至少備份三份。當其中一份因為意外失去之後,不至於讓你徹底失去這些數據。



6/6

把文件直接放在文件系統上

不要再弄一個打包文件把一堆文件打了包再存,當介質發生故障時,打包文件很難恢復,而直接放在文件系統上的文件相對容易恢復一些。

E. java程序中數據的儲存方法有哪些

java程序中數據儲存方法如下:
一種是棧內存,另一種是堆內存
(1)在函數中定義的基本類型變數(即基本類型的局部變數)和對象的引用變數(即對象的變數名)都在函數的棧內存中分配;
(2)堆內存用來存放由new創建的對象和數組以及對象的實例變數(即全局變數)。
在函數(代碼塊)中定義一個變數時,java就在棧中為這個變數分配內存空間,當超過變數的作用域後,java會自動釋放掉為該變數所分配的內存空間;
在堆中分配的內存由java虛擬機的自動垃圾回收器來管理
堆和棧的優缺點
堆的優勢是可以動態分配內存大小,生存期也不必事先告訴編譯器,因為它是在運行時動態分配內存的。
缺點就是要在運行時動態分配內存,存取速度較慢;
棧的優勢是,存取速度比堆要快,僅次於直接位於CPU中的寄存器。

F. 安卓需要存一些參數信息、測量數據和計算結果,File和SQlite哪個好

使用SQLite方式存儲數據

在Android中一共提供了5種數據存儲方式,分別為:

(1)Files:通過FileInputStream和FileOutputStream對文件進行操作。具體使用方法可以參閱博文《Android學習筆記34:使用文件存儲數據》。

(2)Shared Preferences:常用來存儲鍵值對形式的數據,對系統配置信息進行保存。具體使用方法可以參閱博文《Android學習筆記35:使用Shared Preferences方式存儲數據》。

(3)Content Providers:數據共享,用於應用程序之間數據的訪問。

(4)SQLite:Android自帶的輕量級關系型資料庫,支持SQL語言,用來存儲大量的數據,並且能夠對數據進行使用、更新、維護等操作。

(5)Network:通過網路來存儲和獲取數據。

本篇博文介紹第四種方式,通過Android自帶的SQLite資料庫存儲數據。

1.SQLite簡介

SQLite是一款開源的、嵌入式關系型資料庫,第一個版本Alpha發布於2000年。SQLite在便攜性、易用性、緊湊性、高效性和可靠性方面有著突出的表現。

SQLite和C/S模式的資料庫軟體不同,它是一款嵌入式資料庫,沒有獨立運行的進程,與所服務的應用程序在應用程序進程空間內共生共存。它的代碼與應用程序代碼也是在一起的,或者說嵌入其中,作為託管它的程序的一部分。因此不存在資料庫的客戶端和伺服器,使用SQLite一般只需要帶上它的一個動態庫,就可以享受它的全部功能。

資料庫伺服器在程序中的好處是不需要網路配置或管理。將資料庫客戶端與伺服器運行在同一個進程中,可以省去不少的操作及麻煩:不用擔心防火牆或者地址解析;不用浪費時間管理復雜的授權和許可權;可以減少網路調用相關的消耗;可以簡化資料庫管理並使程序更容易部署。

SQLite資料庫通過資料庫級上的獨占性和共享鎖來實現獨立事務處理。這意味著多個進程可以在同一時間從同一資料庫讀取數據,但是只有一個可以寫入數據。在某個進程向資料庫執行寫操作之前,必須獲得獨占鎖定。在發出獨占鎖定後,其他的讀寫操作將不會再發生。

此外,SQLite資料庫中的所有信息(比如表、視圖、觸發器等)都包含在一個文件內,方便管理和維護。SQLite資料庫還支持大部分操作系統,除電腦上使用的操作系統之外,很多手機上使用的操作系統同樣可以運行。同時,SQLite資料庫還提供了多語言的編程介面,供開發者使用。

2.SQL基本命令

SQL是與關系型資料庫通信的唯一方式。它專注於信息處理,是為構建、讀取、寫入、排序、過濾、映射、分組、聚集和通常的管理信息而設計的聲明式語言。

在講解SQL基本命令之前,有必要先了解一下SQLite所支持的數據類型都有哪些。

2.1 SQLite支持的數據類型

SQLite採用動態數據存儲類型,會根據存入的值自動進行判斷。SQLite支持以下5種數據類型:

(1)NULL:空值

(2)INTEGER:帶符號的整型

(3)REAL:浮點型

(4)TEXT:字元串文本

(5)BLOB:二進制對象

2.2 SQL基本命令

表是探索SQLite中SQL的起點,也是關系型資料庫中信息的標准單位,所有的操作都是以表為中心的。那麼如何使用SQL命令創建一張表呢?

2.2.1創建表

表是由行和列組成的,列稱為欄位,行稱為記錄。

使用CREATE命令可以創建表,CREATE命令的一般格式為:

CREATE [TEMP/TEMPORARY] TABLE table_name (column_definitions [, constraints]);

其中,[]中的內容是可選的,用TEMP或TEMPORARY關鍵字聲明的表是臨時表,這種表只存活於當前會話,一旦連接斷開,就會被自動銷毀。如果沒有明確指出創建的表是臨時表,則創建的是基本表,將會在資料庫中持久存在,這也是資料庫中最常見的表。

CREATE TABLE命令至少需要一個表名和一個欄位名,上述命令中的table_name表示表名,表名必須與其他標識符不同。column_definitions由用逗號分隔的欄位列表組成,每個欄位定義包括一個名稱、一個域(類型)和一個逗號分隔的欄位約束。其中,域是指存儲在該列的信息的類型,約束用來控制什麼樣的值可以存儲在表中或特定的欄位中。

一條創建表的命令示例如下:

1 CREATE TABLE tab_student (studentId INTEGER PRIMARY KEY AUTOINCREMENT,
2 studentName VARCHAR(20),
3 studentAge INTEGER);

如上,我們創建了一個名為tab_student的表,該表包含3個欄位:studentId、 studentName和studentAge,其數據類型分別為:INTEGER、VARCHAR和INTEGER。

此外,通過使用關鍵字PRIMARY KEY,我們指定了欄位studentId所在的列是主鍵。主鍵確保了每一行記錄在某種方式上與表中的其他行記錄是不同的(唯一的),進而確保了表中的所有欄位都是可定址的。

SQLite為主鍵提供自增長功能,當定義欄位類型為INTEGER PRIMARY KEY時,SQLite將為該欄位創建默認值,該默認值確保整數值是唯一的。SQLite使用64-bit單符號整數主鍵,因此,該欄位的最大值是9,223,372,036,854,775,807。當達到最大值時,SQLite會自動搜索該欄位還未使用的值,並作為要插入的值。從表中刪除記錄時,rowid可能被回收並在後面的插入中使用。因此,新創建的rowid不一定是按照嚴格順序增長的。如果想要SQLite使用唯一的自動主鍵值,而不是填補空白,可以在主鍵定義INTEGER PRIMARY KEY中加入關鍵字AUTOINCREMENT。AUTOINCREMENT關鍵字阻止rowid回收,它將為新插入的記錄產生新的(不是回收的)rowid。

2.2.2插入記錄

使用INSERT命令可以一次插入一條記錄,INSERT命令的一般格式為:

INSERT INTO tab_name (column_list) VALUES (value_list);

其中,tab_name指明將數據插入到哪個表中,column_list是用逗號分隔的欄位名稱,這些欄位必須是表中存在的,value_list是用逗號分隔的值列表,這些值是與column_list中的欄位一一對應的。

比如,向剛才創建的tab_student表中插入一條記錄,便可以使用如下的語句完成:

INSERT INTO tab_student (studentId, studentName, studentAge) VALUES (1, 「jack」, 23);

通過以上的語句,便插入了一條studentName=」jack」, studentAge=」23」的記錄,該記錄的主鍵為studentId=1。

2.2.3更新記錄

使用UPDATE命令可以更新表中的記錄,該命令可以修改一個表中一行或者多行中的一個或多個欄位。UPDATE命令的一般格式為:

UPDATE tab_name SET update_list WHERE predicate;

其中,update_list是一個或多個欄位賦值的列表,欄位賦值的格式為column_name=value。WHERE子句使用斷言識別要修改的行,然後將更新列應用到這些行。

比如,要更新剛才插入到tab_student表中的記錄,便可以使用如下的語句完成:

UPDATE tab_student SET studentName=」tom」, studentAge=」25」 WHERE studentId=1;

通過以上的語句,便可以將剛才插入的主鍵為studentId=1的記錄更新為studentName=」tom」, studentAge=」25」了。

2.2.4刪除記錄

使用DELETE命令可以刪除表中的記錄,DELETE命令的一般格式為:

DELETE FROM table_name WHERE predicate;

其中,table_name指明所要刪除的記錄位於哪個表中。和UPDATE命令一樣,WHERE子句使用斷言識別要刪除的行。

比如,要刪除剛才插入的記錄,便可以使用如下的語句完成:


DELETE FROM tab_student WHERE studentId=1;

2.2.5查詢記錄

SELECT命令是查詢資料庫的唯一命令。SELECT命令也是SQL命令中最大、最復雜的命令。

SELECT命令的通用形式如下:

SELECT [distinct] heading

FROM tables

WHERE predicate

GROUP BY columns

HAVING predicate

ORDER BY columns

LIMIT count,offset;

其中,每個關鍵字(如FROM、WHERE、HAVING等)都是一個單獨的子句,每個子句由關鍵字和跟隨的參數構成。GROUP BY和HAVING一起工作可以對GROUP BY進行約束。ORDER BY使記錄集在返回之前按一個或多個欄位的值進行排序,可以指定排序方式為ASC(默認的升序)或DESC(降序)。此外,還可以使用LIMIT限定結果集的大小和范圍,count指定返回記錄的最大數量,offset指定偏移的記錄數。

在上述的SELECT命令通用形式中,除了SELECT之外,所有的子句都是可選的。目前最常用的SELECT命令由三個子句組成:SELECT、FROM、WHERE,其基本語法形式如下:

SELECT heading FROM tables WHERE predicate;

比如,要查詢剛才插入的記錄,便可以使用如下的語句完成:


SELECT studentId, studentName, studentAge FROM tab_student WHERE studentId=1;

至此,我們介紹了SQL中最基本和最常用的CREATE、INSERT、UPDATE、DELETE和SELECT命令。當然了,這里只是對其進行了簡單的介紹,有關SQLite中SQL命令的詳細使用方法,可以參閱《SQLite權威指南》一書的第三章和第四章。

3.資料庫操作輔助類SQLiteOpenHelper

Android提供了一個重要的類SQLiteOpenHelper,用於輔助用戶對SQLite資料庫進行操作。

SQLiteOpenHelper的構造函數原型如下:

public SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version);

其中,參數context表示應用程序運行的環境,包含應用程序所需的共享資源。參數name表示Android的資料庫名字。參數factory是SQLiteDatabase.CursorFactory類對象,用於存儲查詢Android SQLite資料庫的結果集。參數version表示應用程序所用的資料庫的版本,該版本並非SQLite的真正版本,而是指定應用程序中的SQLite資料庫的版本,當該版本號發生變化時,將會觸發SQLiteOpenHelper類中的onUpgrade()或onDowngrade()方法。

SQLiteOpenHelper類的所有方法如圖1所示。

圖1 SQLiteOpenHelper類的方法

其中,close()方法用於關閉SQLiteOpenHelper對象中的SQLite資料庫;getReadableDatabase()方法和getWriteableDatabase()方法類似,getReadableDatabase()方法以只讀狀態打開SQLiteOpenHelper對象中指定的SQLite資料庫,任何想要修改資料庫的操作都是不允許的;getWriteableDatabase()方法也是打開資料庫,但是允許資料庫正常的讀/寫操作;在一個不存在的資料庫上調用任何方法時,都會隱式的調用SQLiteOpenHelper對象的onCreate()方法;當應用程序第一次訪問資料庫時,則會調用onOpen()方法,但是,如果版本號發生了變化的話,則會調用onUpgrade()或onDowngrade()方法。

4.資料庫類SQLiteDatabase

SQLiteDatabase類用來完成對資料庫的操作任務,比如表的選擇、插入、更新和刪除語句等。

SQLiteDatabase類中常用的用於執行SQL語句的方法有以下一些。

(1)execSQL()方法:

public void execSQL (String sql);

public void execSQL (String sql, Object[] bindArgs);

(2)query()方法:

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String
groupBy, String having,String orderBy, String limit);

public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String
groupBy, String having, String orderBy, String limit, CancellationSignal cancellationSignal);

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String
having,String orderBy);

public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String
groupBy, String having, String orderBy, String limit);

(3)queryWithFactory()方法:

public Cursor queryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, boolean distinct, String table, String[]columns, String selection, String[] selectionArgs, String groupBy, String having, String
orderBy, String limit,CancellationSignal cancellationSignal);

public Cursor queryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, boolean distinct, String table, String[]columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);

(4)rawQuery()方法:

public Cursor rawQuery (String sql, String[] selectionArgs, CancellationSignal cancellationSignal);

public Cursor rawQuery (String sql, String[] selectionArgs);

(5)rawQueryWithFactory()方法:

public Cursor rawQueryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, String sql, String[]
selectionArgs,String editTable);

public Cursor rawQueryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, String sql, String[]
selectionArgs,String editTable, CancellationSignal cancellationSignal);

其中,execSQL()方法都有一個參數sql,這個參數是一個SQL語句。第二個參數bindArgs接收一個數組,數組中的每個成員捆綁了一個查詢。execSQL()方法用於運行那些沒有返回值的查詢語句,比如創建、插入、更新和修改表。

query()方法和queryWithFactory()方法是在資料庫中運行一些輕量級的單查詢語句,參數包括table、columns、groupBy、having、orderBy、limit等SQL語句關鍵字。這些方法允許將SQL語句傳遞給相關方法,而不必直接使用SQL語句。

rawQuery()方法和rawQueryWithFactory()方法也都有一個參數sql,用於執行SQL查詢語句,返回值是Cursor對象。這兩個方法都有一個版本能夠接收一個字元串數組selectionArgs作為參數,通過這個參數,SQLiteDatabase對象將把捆綁的SQL語句中的問號(?)用這個數組中的值代替,並按照一一對應的位置關系進行取代。

SQLiteDatabase類提供了大約50個方法,除此之外還有一些用於打開資料庫的方法(如openDatabase()、openOrCreateDatabase()等),用於管理SQLite事務的方法(如beginTransaction()、endTransaction()等),用於測試資料庫是否被鎖住的方法(如isDbLockedByCurrentThread()、isDbLockedByOtherThread()等),以及獲取資料庫基本信息的方法(如getMaximumSiza()、getVersion()等)。這里就不一一介紹了,具體可以參閱SQLiteDatabase類的API幫助文檔。

5.游標類Cursor

在Android中,查詢數據是通過Cursor類來實現的,當我們使用SQLiteDatabase.query()或SQLiteDatabase.rawQuery()方法時,會得到一個Cursor對象,Cursor指向的就是每一條記錄,它提供了很多有關查詢的方法,如圖2所示。
http://www.cnblogs.com/menlsh/archive/2013/04/13/3019588.html

G. vb.net 如何存儲用戶數據

這個你可以用 api操作ini文件來實現。ini是windows系統的配置文件。
'首先聲明這兩個api
Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long