Привести изображения в виде BIN в базе данных MySQL в приложение для Android - PullRequest
0 голосов
/ 02 января 2012

Я исследовал и нашел много похожих вопросов. Два вопроса

1 - [со всей 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 отлично работает для строк, но как вернуть изображения обратно?

1 Ответ

0 голосов
/ 02 января 2012

О загрузке, у вас есть несколько учебных пособий в Интернете, например этот или этот .

Что касается возврата ваших изображений, я думаю, что BLOB-объекты хранятся в виде байтовых массивов в SQLite, поэтому вам придется получить свой входной поток, преобразовать его в байтовый массив и поместить в ContentValues. IOUtils из Apach commons-io lib .

Из последней строки вашего кода:

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

Обратите внимание, что это ДОЛЖНО БЫТЬ СДЕЛАНО в AsynTask, поскольку загрузка сети и запись в базу данных должны выполняться в фоновом режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...