日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android開發(fā):利用數(shù)據(jù)庫存儲和調(diào)用圖片路徑(android數(shù)據(jù)庫圖片路徑)

隨著移動互聯(lián)網(wǎng)的發(fā)展,越來越多的應(yīng)用開始使用圖片來豐富用戶體驗。在Android開發(fā)中,使用SQLite數(shù)據(jù)庫來存儲和調(diào)用圖片路徑是一種常見的方式。本文將介紹如何在Android開發(fā)中使用SQLite數(shù)據(jù)庫來存儲和調(diào)用圖片路徑。

創(chuàng)新互聯(lián)公司基于分布式IDC數(shù)據(jù)中心構(gòu)建的平臺為眾多戶提供四川雅安服務(wù)器托管 四川大帶寬租用 成都機柜租用 成都服務(wù)器租用。

一、準(zhǔn)備工作

首先需要在AndroidManifest.xml文件中添加讀寫外部存儲的權(quán)限:

“`

“`

然后在build.gradle文件中添加SQLite依賴:

“`implementation ‘a(chǎn)ndroidx.sqlite:sqlite:2.2.0’“`

二、創(chuàng)建數(shù)據(jù)庫

在Android開發(fā)中,我們需要使用SQLiteOpenHelper來創(chuàng)建和管理數(shù)據(jù)庫。因此,我們需要創(chuàng)建一個類來繼承SQLiteOpenHelper。在這個類中,我們需要重寫onCreate()方法來創(chuàng)建數(shù)據(jù)庫表格,并重寫onUpgrade()方法來更新數(shù)據(jù)庫。

“`

public class MyDatabaseHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = “my_app.db”;

private static final int DATABASE_VERSION = 1;

private static final String TABLE_NAME = “my_table”;

private static final String COLUMN_ID = “id”;

private static final String COLUMN_PATH = “path”;

public MyDatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

String createTableQuery = “CREATE TABLE ” + TABLE_NAME +

“(” + COLUMN_ID + ” INTEGER PRIMARY KEY,” +

COLUMN_PATH + ” TEXT);”;

db.execSQL(createTableQuery);

}

@Override

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

String dropTableQuery = “DROP TABLE IF EXISTS ” + TABLE_NAME + “;”;

db.execSQL(dropTableQuery);

onCreate(db);

}

}

“`

在以上示例中,我們創(chuàng)建了一個包含id和path列的my_table表。id列是整數(shù)類型的主鍵,path列是文本類型的列。

三、插入數(shù)據(jù)

在Android開發(fā)中,將圖片路徑存儲到數(shù)據(jù)庫中需要注意以下幾個問題:

– 圖片路徑必須是唯一的

– 為避免路徑中存在特殊字符,可以使用Base64編碼來保存路徑

– 插入數(shù)據(jù)前需要先查詢數(shù)據(jù)庫,以保證圖片路徑唯一

下面是一個將圖片路徑存儲到數(shù)據(jù)庫的示例:

“`

public static void saveImagePath(Context context, String imagePath) {

// 將圖片路徑進行Base64編碼,避免路徑中存在特殊字符

String encodedPath = Base64.encodeToString(imagePath.getBytes(), Base64.DEFAULT);

MyDatabaseHelper myDatabaseHelper = new MyDatabaseHelper(context);

SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();

// 查詢數(shù)據(jù)庫,如果已經(jīng)存在相同的路徑則不插入

String query = “SELECT * FROM ” + MyDatabaseHelper.TABLE_NAME +

” WHERE ” + MyDatabaseHelper.COLUMN_PATH + “='” + encodedPath + “‘;”;

Cursor cursor = db.rawQuery(query, null);

if (cursor.getCount() == 0) {

ContentValues values = new ContentValues();

values.put(MyDatabaseHelper.COLUMN_PATH, encodedPath);

db.insert(MyDatabaseHelper.TABLE_NAME, null, values);

}

cursor.close();

db.close();

}

“`

在以上示例中,我們首先將圖片路徑進行Base64編碼,然后查詢數(shù)據(jù)庫,如果不存在相同的圖片路徑,則將新的路徑存儲到數(shù)據(jù)庫中。

四、查詢數(shù)據(jù)

從數(shù)據(jù)庫中檢索圖片路徑有兩種方式。一種是取出所有路徑,一種是根據(jù)特定的id來獲取路徑。以下示例演示兩種方式:

“`

public static ArrayList getImagePaths(Context context) {

ArrayList paths = new ArrayList();

MyDatabaseHelper myDatabaseHelper = new MyDatabaseHelper(context);

SQLiteDatabase db = myDatabaseHelper.getReadableDatabase();

String query = “SELECT * FROM ” + MyDatabaseHelper.TABLE_NAME + “;”;

Cursor cursor = db.rawQuery(query, null);

if (cursor.moveToFirst()) {

do {

String encodedPath = cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_PATH));

String path = new String(Base64.decode(encodedPath.getBytes(), Base64.DEFAULT));

paths.add(path);

} while (cursor.moveToNext());

}

cursor.close();

db.close();

return paths;

}

public static String getImagePathById(Context context, int id) {

MyDatabaseHelper myDatabaseHelper = new MyDatabaseHelper(context);

SQLiteDatabase db = myDatabaseHelper.getReadableDatabase();

String query = “SELECT * FROM ” + MyDatabaseHelper.TABLE_NAME +

” WHERE ” + MyDatabaseHelper.COLUMN_ID + “='” + id + “‘;”;

Cursor cursor = db.rawQuery(query, null);

String path = null;

if (cursor.moveToFirst()) {

String encodedPath = cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_PATH));

path = new String(Base64.decode(encodedPath.getBytes(), Base64.DEFAULT));

}

cursor.close();

db.close();

return path;

}

“`

在以上示例中,我們從數(shù)據(jù)庫中取出所有路徑或根據(jù)id獲取特定路徑。我們使用了Base64編碼來保存路徑并在檢索時進行解碼。

五、

相關(guān)問題拓展閱讀:

  • android:從數(shù)據(jù)庫中取得的圖片,無法顯示到模擬器上

android:從數(shù)據(jù)庫中取得的圖片,無法顯示到模擬器上

應(yīng)該是你在byte【】轉(zhuǎn)換成bitmap 時候 或者圖片轉(zhuǎn)換成byte【】數(shù)組時候出現(xiàn)錯位等一些問題,導(dǎo)致圖片不能正確顯示, 我的圖片一般都是存儲路徑的(把圖片放在sdcard),然后顯示的時候直接從路徑讀取,上傳給服務(wù)器時候用fileInfutstream 讀取指定路徑下的圖片 上傳給服務(wù)器

對數(shù)據(jù)庫存取圖片進行的操作:

核心思想:通過二進制流的形式進行存儲和讀取。

具體:存儲圖片:一般是通過文件上傳的方式進行存儲的

1.首先通過request獲得表單中圖片的地址

2.然后根據(jù)這個路徑可以使FileInputStream獲得文件輸入流

3.pstmt.setBinaryStream(i, fis, fis.available())

最后pstmt.executeUpdate();就完成整個插入語句了。

讀取:1.根據(jù)url的id傳一個對應(yīng)數(shù)據(jù)庫摸個圖片的id號

.根據(jù)這個id執(zhí)行查詢,通過rst.getBinaryStream(1)返回一個輸入流(里面存的是圖片)

.讀輸入流,放到字節(jié)數(shù)組中,再通過response返回一個能輸出二進制流的ServletOutputStream實例(ServletOutputStream sos= response.getOutputStream(); ),

.通過這個輸出流把字節(jié)數(shù)組的字節(jié)流寫出

希望對你有所幫助哈

圖片存數(shù)據(jù)庫?你存?zhèn)€路徑把,圖片別存數(shù)據(jù)庫。

android 數(shù)據(jù)庫 圖片路徑的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于android 數(shù)據(jù)庫 圖片路徑,Android開發(fā):利用數(shù)據(jù)庫存儲和調(diào)用圖片路徑,android:從數(shù)據(jù)庫中取得的圖片,無法顯示到模擬器上的信息別忘了在本站進行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


網(wǎng)站欄目:Android開發(fā):利用數(shù)據(jù)庫存儲和調(diào)用圖片路徑(android數(shù)據(jù)庫圖片路徑)
地址分享:http://www.5511xx.com/article/dpdiscd.html