2016-10-05 3 views
0

java.lang.IllegalStateException: Не удалось прочитать строку 0, col 0 из CursorWindow. Перед доступом к данным убедитесь, что курсор инициализирован правильно.Не удалось прочитать строку 0, col 0 из CursorWindow

public class MyProfile extends AppCompatActivity { 
    private Context mContext; 
    private ImageView i1, i2,i3; 
    private static final int SELECT_IMAGE = 1; 
    private StoreProfileData mStore; 
    SQLiteDatabase db; 
    String path; 
    Cursor cursor,c; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my_profile); 
     mContext = MyProfile.this; 
     i1 = (ImageView) findViewById(R.id.user_profile_photo); 
     i2 = (ImageView) findViewById(R.id.user_profile_photo_hidden); 
     i3 = (ImageView) findViewById(R.id.header_cover_image); 
     db=this.openOrCreateDatabase("test.db",Context.MODE_PRIVATE,null); 
     db.execSQL("create table if not exists tb(a blob)"); 

    } 
    public void initialize() { 
     i2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent i = new Intent(Intent.ACTION_PICK, 
         android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
       final int ACTIVITY_SELECT_IMAGE = 1234; 
       startActivityForResult(i, ACTIVITY_SELECT_IMAGE); 
      } 
     }); 
    } 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     switch (requestCode) { 
      case 1234: 
       if (resultCode == RESULT_OK) { 
        Uri selectedImage = data.getData(); 
        String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
        cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
        cursor.moveToFirst(); 
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
        String filePath = cursor.getString(columnIndex); 
        File f = new File(filePath); 
        path=f.getPath(); 
        Log.d("path",path); 
        cursor.close(); 
       //  Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath); 
       // i2.setImageBitmap(yourSelectedImage); 

       } 
     } 
    } 

сохранить метод изображения он успешно instereted путь в SQLite базы данных

public void saveImage(View view) 
    { 
     try { 
      FileInputStream fts = null; 
      fts = new FileInputStream(path); 
      byte[]image=new byte[fts.available()]; 
      fts.read(image); 
      ContentValues values=new ContentValues(); 
      values.put("a",image); 
      db.insert("tb", null, values); 
      fts.close(); 
      Toast.makeText(this,"inserted",Toast.LENGTH_LONG).show(); 
     } 
     catch (IOException e){ 
      e.printStackTrace(); 
     } 
    } 

метод GetImage для ПОЛУЧИТЬ изображения из вставлено в базу данных здесь я получаю MESG об ошибке

public void getImage(View view) { 
      cursor = db.rawQuery("select * from tb", null); 
     Log.d("dv", String.valueOf(cursor)); 
     if (cursor.getCount() > 0) { 
      Log.d("crsr", "sdds"); 
      if (cursor.moveToNext()) { 
       byte[] image = cursor.getBlob(0); 
       Bitmap bmp = BitmapFactory.decodeByteArray(image, 0, image.length); 
       i2.setImageBitmap(bmp); 
       Toast.makeText(this, "selected", Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 
} 
+0

Вы можете сохранить путь изображения в своей базе данных или в строке массива байтов этого изображения. –

+0

Как можно вставить значение изображения из страницы myprofile в storageagedata? –

+0

Как вы устанавливаете значение в режиме просмотра изображений? это в xml-файле? –

ответ

0

изменить на это `

private static String IMAGE_CREATE_QUERY = "CREATE TABLE " + IMAGE_TABLE_NAME + " (" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_EMAIL + " TEXT," + KEY_NUMBER + " TEXT," + KEY_CLASS + " TEXT," + KEY_STREAM + " TEXT," + KEY_IMAGE + " BLOB)";` 
+1

Сэр, как вставить значение изображения и получить его в виде изображения? –

+1

Почему вы храните изображение в базе данных? –

+0

Добавьте изображение в папку приложения. Сохраните URL-адрес и получите изображение с этого URL-адреса, когда требуется –

Смежные вопросы