如何存储在SQLite数据库图像按钮的单击事件? [英] How to store images in sqlite database on click event of button?

查看:137
本文介绍了如何存储在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
    ///的Andr​​oid /数据/<程序包> /文件/
    公共无效的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆