當前位置:首頁 » 安卓系統 » androidsqlite圖片

androidsqlite圖片

發布時間: 2023-07-06 23:41:57

『壹』 android系統sqlite資料庫文件怎麼打開

工具/原料

SQLite Expert Professional
方法/步驟

安裝SQLite Expert Professional 可以在網上下載,我下載的是試用版,沒有找注冊碼,但是試用不影響使用,反正用幾次查看到資料庫操作沒有錯誤就不用這個工具了。當然也可以使用Eclipse插件DDMS來查看,也可以使用Android工具包中的adb工具來查看。android項目中的sqlite資料庫位於/data/data/項目包/databases中。先介紹使用DDMS導出sqlite資料庫的操作和使用adb工具訪問sqlite資料庫。
首先打開android項目的調試模式,然後找到顯示DDMS

切換到DDMS,顯示File Explorer窗口,找到/data/data/ 如下圖1 ,
然後找到程序包的文件夾,打開databases,就能看到sqlite資料庫文件了。選擇將其導出。如下圖2.
這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如SQLite Expert Professional可以打開該資料庫了。其他 sqlite界面管理工具如sqlite administrator、sqlite man或者firefox插件sqlite manager也可以打開該資料庫。

使用adb工具訪問sqlite資料庫
Android Debug Bridge(ADB)是Android的一個通用調試工具,它可以更新設備或模擬器中的代碼,可以管理預定埠,可以在設備上運行shell命令,我們 知道android是基於linux內核,它的內部文件結構也是採用linux文件組織方式,因此訪問它的文件結構需要使用shell。這次我們就會用 shell來訪問android應用中的sqlite資料庫文件。
1、運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:如下圖

進入資料庫所在目錄:
shell命令記住兩個基本命令ls和cd,類似windows命令提示行中的dir和cd,代表列出當前目錄下文件列表和進入到指定目錄。了解這兩個命令之後,就可以找到data/data/項目包名/databases 如下圖1, 找到資料庫文件如下圖2。

使用sqlite管理工具來進行資料庫操作
鍵入sqlite3 資料庫名就進入了sqlite管理模式了。
如下圖

設置sqlite環境變數:
在android的sdk中自帶了sqlite3.exe,這是sqlite的官方管理工具,它是一個命令行工具。為了使用方便,將其路徑注冊到系 統環境變數path中,即將;%Android_Home%加在Path中,這樣只樣運行sqlite3,就能直接打開sqlite管理工具了。
如下圖:

使用sqlite管理資料庫:
sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。
sqlite常用命令:
.tables--查看資料庫的表列表
.exit--退出sqlite命令行
其他命令可隨時.help查看幫助。sql命令可直接在此命令行上執行即可:
如下圖:

『貳』 android開發中如何在sqlite中創建一個的一個表和該表對應的方法類,目前最頭疼的就是圖標的圖片存取了

下面這個文件創建了Book.db,創建了表book,另外提供兩個簡單的方法,裡面有很多不完善的地方,沒有一一寫出來。時間有限,希望能幫助到你。

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import java.io.ByteArrayOutputStream;

import static com.ume.myapplication.Columns.BOOK_AUTHOR;

/**
* _ Created by AlphaGo on 2017/3/11. just simple sample
*/

public class BookDbHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "Book.db";
public static final String TABLE_BOOK = "Book";
public static final int DB_VERSION = 1;

private Context mContext;

public BookDbHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
mContext = context;
}

@Override
public void onCreate(SQLiteDatabase db) {

createBookmarkTbl(db);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

private void createBookmarkTbl(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_BOOK + "("
+ Columns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ BOOK_AUTHOR + " TEXT,"
+ Columns.BOOK_INTRODUCTION + " TEXT,"
+ Columns.BOOK_LABEL + " TEXT ,"
+ Columns.BOOK_NAME + " INTEGER NOT NULL DEFAULT 0,"
+ Columns.BOOK_PRICE + " FLOAT,"
+ Columns.BOOK_STOCK + " INTEGER NOT NULL,"
+ Columns.BOOK_ICON + " BLOB"
+ ");");
}

/**
* Insert Item
*/

public long insertItem(Book book) {
long id;
ContentValues initValues = new ContentValues();
ByteArrayOutputStream os = new ByteArrayOutputStream();
book.icon.compress(Bitmap.CompressFormat.PNG, 100, os);
initValues.put(BOOK_AUTHOR, book.author);
initValues.put(Columns.BOOK_INTRODUCTION, book.introction);
initValues.put(Columns.BOOK_LABEL, book.label);
initValues.put(Columns.BOOK_NAME, book.name);
initValues.put(Columns.BOOK_PRICE, book.price);
initValues.put(Columns.BOOK_STOCK, book.stock);
initValues.put(Columns.BOOK_ICON, os.toByteArray());
SQLiteDatabase db = getWritableDatabase();
id = db.insert(TABLE_BOOK, null, initValues);
db.close();
return id;
}

/**
* retrieve item by database index
*/

public Book getItemByIndex (int index){
Book book = new Book();

SQLiteDatabase db = getWritableDatabase();
Cursor cursor = db.query(TABLE_BOOK, null, "_id =?", new String[]{String.valueOf(index)}, null, null, null);
while (cursor.moveToNext()){
int id = cursor.getInt(0);
String author = cursor.getString(1);
String introction = cursor.getString(2);
String label = cursor.getString(3);
String name = cursor.getString(4);
float price = cursor.getFloat(5);
int stock = cursor.getInt(6);
byte[] bytes = cursor.getBlob(7);
Bitmap icon = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
book.icon = icon;
// TODO: 2017/3/11 one more thing
}
return book;
}

private static class Book {
public String author;
public String introction;
public String label;
public String name;
public float price;
public int stock;
public Bitmap icon;
}
}

『叄』 android中怎麼用sqlite存儲一個map

在進行Android開發過程中,我們經常會接觸到Drawable對象(官方開發文檔:A Drawable is a general abstraction for "something that can be drawn."),那麼,若要使用資料庫來進行存儲及讀取,該如何實現?
一、存儲

//第一步,將Drawable對象轉化為Bitmap對象

Bitmap bmp = (((BitmapDrawable)tmp.image).getBitmap());

//第二步,聲明並創建一個輸出位元組流對象

ByteArrayOutputStream os = new ByteArrayOutputStream();

//第三步,調用compress將Bitmap對象壓縮為PNG格式,第二個參數為PNG圖片質量,第三個參數為接收容器,即輸出位元組流os

bmp.compress(Bitmap.CompressFormat.PNG, 100, os);

//第四步,將輸出位元組流轉換為位元組數組,並直接進行存儲資料庫操作,注意,所對應的列的數據類型應該是BLOB類型

ContentValues values = new ContentValues();

values.put("image", os.toByteArray());

db.insert("apps", null, values);

db.close();

『肆』 有哪些比較好的AndroidSQLite開源工具類(android中的sqlite資料庫具有哪些特點)

是一個免費的開源的、簡易的、遵循Apache2開源協議發布的Android開發框架,其開發宗旨是簡單、快速的進行Android應用程序的開發,包含Androidmvc、簡易sqliteorm、ioc模塊、封裝Androidhttpclitent的http模塊,具有快速構建文件緩存功能,無需考慮緩存文件的格式,都可以非常輕松的實現緩存,它還基於文件緩存模塊實現了圖片緩存功能,在android中載入的圖片的時候,對oom的問題,和對載入圖片錯位的問題都輕易解決。他還包括了一個手機開發中經常應用的實用工具類,如日誌管理,配置文件管理,android下載器模塊,網路切換檢測等等工具。

目前主要有以下模塊:

MVC模塊:實現視圖與模型的分離。

ioc模塊:android中的ioc模塊,完全註解方式就可以進行UI綁定、res中的資源的讀取、以及對象的初始化。

資料庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。

http模塊:通過httpclient進行封裝http數據請求,支持非同步及同步方式載入。

緩存模塊:通過簡單的配置及設計可以很好的實現緩存,對緩存可以隨意的配置

圖片緩存模塊:imageview載入圖片的時候無需考慮圖片載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。

配迅擾頌置器模塊:可以對簡易的實現配對配置的操作,目前配置文件可以支持Preference、Properties對配置進行存取。

日誌列印模塊:可以較快的輕易的是實現日誌列印,支持日誌列印的擴展,目前支持對sdcard寫入本地列印、以及控制台列印

下載器模塊:可以簡單的實現多線程下載、後台下載、斷點續傳、對下載進李肆行控制、如開始、暫停、刪除等畝鄭等。

網路狀態檢測模塊:當網路狀態改變時,對網路狀態進行檢測。

『伍』 android 什麼時候使用sqlite

如果是本地數據的需求用SQlite,如果像登陸有用驗證或者網路間共享數據的話,就需要調用WebService與後台伺服器數據交互,這兩種數據是沒有聯系的。一個是本地資料庫,一個是伺服器端資料庫。本地用資料庫就是SQlite,別的不太可能,終端沒有那麼高的性能,再說甲骨文公司也沒出手機端oracle啊。
如果你的數據是已知的,靜態的,沒有太多的變化,滿可以在本地SQlite中存儲、讀取。這樣不會因網路問題而降低效率和成功率。如果數據未知、有實時的變化或者有與其他用戶交互、共享的數據必然需要後台伺服器數據

下面是sqlite增刪改查的例子,更多例子請參考android學習手冊,例子、源碼、文檔全部搞定,採用androidstudo的目錄結構,360手機助手中下載。

『陸』 求助!android開發 如何將圖片添加進SQlite資料庫

圖片等二進制媒體數據可以保存到BLOB類型的欄位里,例子:

http://blog.csdn.net/zhouyongyang621/archive/2010/03/26/5418586.aspx

但是一般不推薦這么做,因為如果保存大量媒體數據那麼資料庫的大小會激增,導致資料庫訪問性能下降。還是把圖保存到文件里,然後在資料庫里加個欄位引用文件路徑吧。

建議你盡可能把圖保存到SD卡上(/sdcard),如果沒有SD卡就保存到應用程序的私有目錄里(/data/data/packagename/)

『柒』 怎樣解決android SQLite 圖片是以圖片的存儲路徑的方式存儲的,讀取並顯示在GridVi.

String
picPath
=
c.getString(c.getColumnIndex("pic"));BitmapFactory.Options
options
=
new
BitmapFactory.Options();
options.inSampleSize
=
2;
Bitmap
bitmap
=
BitmapFactory.decodeFile(picPath,
options);CheckMenu
cm
=
new
CheckMenu();
cm.setBm(bitmap);list.add(cm);//list
是這樣定義的List
list
=
new
ArrayList();//在GridView的getview(),里我自定義了一個布局imageView
=
(ImageView)
v.findViewById(R.id.diancai_view_ImageView01);CheckMenu
cm
=
(CheckMenu)
list.get(position);imageView.setImageBitmap(cm.getBm());請問這幾行代碼有問題嗎?
為什我我運行就是現實不出來圖片,而且沒有報錯信息!

熱點內容
台式機忘記開機密碼怎麼辦 發布:2025-02-06 11:58:01 瀏覽:868
android刷新按鈕 發布:2025-02-06 11:57:17 瀏覽:585
存儲過程有輸入參數和輸出參數 發布:2025-02-06 11:55:32 瀏覽:96
成績評選演算法 發布:2025-02-06 11:42:51 瀏覽:994
資料庫測試數據 發布:2025-02-06 11:31:05 瀏覽:821
球頭軸編程 發布:2025-02-06 11:29:36 瀏覽:280
為什麼安卓系統不能收縮許可權 發布:2025-02-06 11:27:58 瀏覽:730
演算法4視頻 發布:2025-02-06 11:19:20 瀏覽:934
51內置音效卡需要什麼主機配置 發布:2025-02-06 11:18:33 瀏覽:838
防針刺傷的物品配置有哪些 發布:2025-02-06 11:11:25 瀏覽:670