如何存储在SQLite数据库图像按钮的单击事件? [英] How to store images in sqlite database on click event of button?
本文介绍了如何存储在SQLite数据库图像按钮的单击事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在SQLite数据库存储图像按钮单击事件?
解决方案
包com.examples.aMySQL2;
进口android.app.Activity;
进口android.content.ContentValues;
进口android.content.Context;
进口android.database.Cursor;
进口android.database.sqlite.SQLiteCursor;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteOpenHelper;
进口android.graphics.Bitmap;
进口android.graphics.BitmapFactory;
进口android.os.Bundle;
进口android.util.Log;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;
进口android.widget.ImageView;
进口android.widget.TextView;
//从文件中读取行
进口java.io.BufferedInputStream中;
进口java.io.BufferedReader中;
进口java.io.ByteArrayInputStream中;
进口的java.io.File;
进口java.io.FileInputStream中;
进口java.io.FileOutputStream中;
进口java.io.FileReader;
进口java.io.IOException异常;
进口的java.io.InputStream;
进口的java.net.URL;
进口java.net.URLConnection中;
进口org.apache.http.util.ByteArrayBuffer;
公共类aMySQL2Activity扩展活动实现OnClickListener
{
受保护的静态的TextView TextView的;
受保护的静态ImageView的bmImage;
保护键式启动;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
bmImage =(ImageView的)findViewById(R.id.imageView1);
TextView的=(的TextView)findViewById(R.id.textView1);
启动=(按钮)findViewById(R.id.button1);
start.setOnClickListener(本);
下载文件();
}
// /数据/数据/<程序包> /数据库-путькбазеданныхпоумолчанию
///data/data/com.examples.aMySQL2/databases/MyDB.db// - путькбазеданныхпоумолчанию
///sdcard/Nick/MyDB.db
///mnt/sdcard/Nick/MyDB.db
///的Android /数据/<程序包> /文件/
公共无效的onClick(视图v)
{
SQLiteDatabase MYDB;
字符串MySQL的;
INT ICOUNT;
byte []的byteImage1 = NULL;
byte []的byteImage2 = NULL;
MySQL的=创建表EMP1(_id INTEGER主键自动增量,FIO文本不为空,图片BLOB);;
MYDB = openOrCreateDatabase(/ SD卡/尼克/ MyWeatherDB.db,Context.MODE_PRIVATE,NULL);
// myDb.execSQL(MySQL的);
字符串s = myDb.getPath();
textView.append(\ r \ N+ S +\ r \ N);
myDb.execSQL(删除EMP1);
ContentValues newValues =新ContentValues();
newValues.put(FIO,ИвановПетрСергеевич);
///////////插入图片BLOB字段/////////////////////
尝试
{
的FileInputStream河道=新的FileInputStream(/ SD卡/尼克/ weather.png);
的BufferedInputStream BIF =新的BufferedInputStream(河道);
byteImage1 =新的字节[bif.available()];
bif.read(byteImage1);
textView.append(\ r \ N+ byteImage1.length +\ r \ N);
newValues.put(图片报,byteImage1);
长RET = myDb.insert(EMP1,空,newValues);
如果(RET℃下)textView.append(\ r \ñ!!!错误添加一滴申请!\ r \ N);
}赶上(IOException异常E)
{
textView.append(\ r \ñ!!!错误:+ E +!\ r \ N);
}
////////////读取数据////////////////////////////
光标CUR = myDb.query(EMP1,NULL,NULL,NULL,NULL,NULL,NULL);
cur.moveToFirst();
而(cur.isAfterLast()==假)
{
textView.append(\ r \ N+ cur.getString(1)+\ r \ N);
cur.moveToNext();
}
///////阅读从BLOB字段数据////////////////////
cur.moveToFirst();
byteImage2 = cur.getBlob(cur.getColumnIndex(图片报)); //ИМЕННОТАК!
bmImage.setImageBitmap(BitmapFactory.de codeByteArray(byteImage2,0,byteImage2.length));
textView.append(\ r \ N+ byteImage2.length +\ r \ N);
//////////////////////////
cur.close();
myDb.close();
}
公共无效DownloadFile()
{
位图bitmap1 = NULL;
bitmap1 = BitmapFactory.de codeFILE(/ SD卡/尼克/ saranka.jpg); //weather.png);
bmImage.setImageBitmap(bitmap1);
}
}
How to store image in sqlite database on click event of button?
解决方案
package com.examples.aMySQL2;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
//Reading lines from a file
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.apache.http.util.ByteArrayBuffer;
public class aMySQL2Activity extends Activity implements OnClickListener
{
protected static TextView textView;
protected static ImageView bmImage;
protected Button start;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bmImage = (ImageView)findViewById(R.id.imageView1);
textView = (TextView) findViewById(R.id.textView1);
start = (Button) findViewById(R.id.button1);
start.setOnClickListener(this);
DownloadFile();
}
// /data/data/<package_name>/databases -путь к базе данных по умолчанию
// "/data/data/com.examples.aMySQL2/databases/MyDB.db" //-путь к базе данных по умолчанию
// "/sdcard/Nick/MyDB.db"
// "/mnt/sdcard/Nick/MyDB.db"
/// Android/data/<package_name>/files/
public void onClick(View v)
{
SQLiteDatabase myDb;
String MySQL;
int icount;
byte[] byteImage1 = null;
byte[] byteImage2 = null;
MySQL="create table emp1(_id INTEGER primary key autoincrement, fio TEXT not null, picture BLOB);";
myDb = openOrCreateDatabase("/sdcard/Nick/MyWeatherDB.db", Context.MODE_PRIVATE, null);
// myDb.execSQL(MySQL);
String s=myDb.getPath();
textView.append("\r\n" + s+"\r\n");
myDb.execSQL("delete from emp1");
ContentValues newValues = new ContentValues();
newValues.put("fio", "Иванов Петр Сергеевич");
/////////// insert picture to blob field /////////////////////
try
{
FileInputStream instream = new FileInputStream("/sdcard/Nick/weather.png");
BufferedInputStream bif = new BufferedInputStream(instream);
byteImage1 = new byte[bif.available()];
bif.read(byteImage1);
textView.append("\r\n" + byteImage1.length+"\r\n");
newValues.put("picture", byteImage1);
long ret = myDb.insert("emp1", null, newValues);
if(ret<0) textView.append("\r\n!!! Error add blob filed!!!\r\n");
} catch (IOException e)
{
textView.append("\r\n!!! Error: " + e+"!!!\r\n");
}
////////////Read data ////////////////////////////
Cursor cur = myDb.query("emp1",null, null, null, null, null, null);
cur.moveToFirst();
while (cur.isAfterLast() == false)
{
textView.append("\r\n" + cur.getString(1)+"\r\n");
cur.moveToNext();
}
///////Read data from blob field////////////////////
cur.moveToFirst();
byteImage2=cur.getBlob(cur.getColumnIndex("picture")); // ИМЕННО ТАК!!!
bmImage.setImageBitmap(BitmapFactory.decodeByteArray(byteImage2, 0, byteImage2.length));
textView.append("\r\n" + byteImage2.length+"\r\n");
//////////////////////////
cur.close();
myDb.close();
}
public void DownloadFile()
{
Bitmap bitmap1 = null;
bitmap1 = BitmapFactory.decodeFile("/sdcard/Nick/saranka.jpg"); //weather.png");
bmImage.setImageBitmap(bitmap1);
}
}
这篇关于如何存储在SQLite数据库图像按钮的单击事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文