Как загрузить изображение MySql Table (BLOB) в ImageView, используя диск JDBC - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть проект, над которым я работаю.в этом проекте я пытаюсь получить изображение пользователя для входа в ImageView из таблицы MySQL через драйвер JDBC, в этом случае изображение загружается один раз и второй раз, если я пытаюсь загрузить изображение, то система выдает ошибку, после ошибкиеще раз, если я пытаюсь загрузить изображение, то изображение загружается в ImageView.Здесь я прилагаю код.

private class findpicture extends  AsyncTask<String, String, String> {

    String msg;
    String searchtext= textView3.getText().toString();

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Toast.makeText(getApplicationContext(), "Searching username", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
        textView3.setText("");
    }

    @Override
    protected String doInBackground(String... strings) {

        try{

            Class.forName("com.mysql.jdbc.Driver");
            Connection con = (Connection)DriverManager.getConnection(url,user,pass);

            if (con == null){
                msg="Connection error...";
            }else{
                byte b[];
                Blob blob;
                Statement statement= (Statement) con.createStatement();
                ResultSet resultSet = statement.executeQuery("select * from userlogin where name='"+searchtext+"'");

                while (resultSet.next()){
                    blob = resultSet.getBlob("image");
                    b= blob.getBytes(1, (int)blob.length());
                    Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
                    savedphoto.setImageBitmap(bitmap);
                    }
                msg= "user image saved successfully...";

            }

        }catch (Exception e){
            msg="unknown error..."+e;

            System.out.println(e.toString());
        }

        return null;
    }
}

Код ошибки android.view.ViewRootImpl $ CalledFromWrongThreadException: только исходный поток, создавший иерархию представлений, может касаться его представлений.

1 Ответ

0 голосов
/ 20 декабря 2018

У вас конфликт Thread, вам нужно перепроверить ваши звонки и синхронизировать задачи там, Быстрое решение вашей проблемы

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        new findpicture().execute();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...