2012-01-02 4 views
0

나는 비슷한 질문을 연구하고 발견했다. 두 질문안드로이드 애플 리케이션에 MySQL 데이터베이스에 BIN 양식의 이미지를 가져와

[모든 PHP 및 mySQL BLOB와 함께] 측면이 완료되고 작동합니다. 드로어 블/이미지를 데이터베이스에 업로드하려면 어떻게해야합니까? 나는 노력하고있어

public void AddRecord(String spin_cb, String statusinput_cb, String comment_cb, Drawable image_cb) { 

     try { 
      //SQLiteDatabase db = _dbHelper.getWritableDatabase(); THIS IS THE LOCAL DATABASE LOGIC DISABLED 
      /*ContentValues values = new ContentValues(); 
      values.put(Column_itemcatagory,itemcatagory); 
      values.put(Column_itemtype,itemtype); 
      values.put(Column_itemdesc, itemdesc); 
      values.put(Column_contact, contact); 
      values.put(Column_reward, reward); 

      db.insert(TABLE_NAME, "", values);*/ 

      ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

      nameValuePairs.add(new BasicNameValuePair("cb_spin", spin_cb)); 
      nameValuePairs.add(new BasicNameValuePair("cb_status", statusinput_cb)); 
      nameValuePairs.add(new BasicNameValuePair("cb_rate", comment_cb)); 
      nameValuePairs.add(new BasicNameValuePair("cb_image", image_cb.toString())); 


      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://www.bidland.ie/carbook/Insert.php"); 

      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      InputStream is = entity.getContent(); 

     }catch (Exception e) 
     { 
      Log.e(tag,"AddRecord Exception [" + e.getMessage() + "]"); 
     } 
    } 

그러나 namesvaluepair는 Drawable을 사용하지 않습니까?

2 mySQL에서 생성 한 레코드는 어떻게 다시 읽을 수 있습니까? JSON은 문자열에 완벽하게 작동하지만 이미지를 다시 얻는 방법은 무엇입니까?

답변

0

업로드의 경우 웹에 this one 또는 this one과 같은 여러 자습서가 있습니다.

이미지를 가져 오는 것에 대해 BLOB가 SQLite에 바이트 배열로 저장되어 있으므로 입력 스트림을 가져와 바이트 배열로 변환하고 ContentValues에 넣어야합니다. IOUtils는 Apach commons-io lib에서 가져온 것입니다. 코드의 마지막 줄에서

: 네트워크로드 및 데이터베이스 작성이 백그라운드에서 수행해야합니다으로이 이 AsynTask에을 수행해야한다는

InputStream is = entity.getContent(); 
byte[] bytes = IOUtils.toByteArray(is); 
ContentValues values = new ContentValues(); 
values.put("cb_image", bytes); 
... 
db.insert(TABLE_NAME, "", values); 

참고.

관련 문제