android - 如何使用 JDBC Drive 将 MySql 表图像 (BLOB) 加载到 ImageView

标签 android android-studio imageview

我有一个项目正在进行中。在这个项目中,我试图通过 JDBC 驱动程序将登录用户图像从 MySQL 表中获取到 ImageView,在这种情况下,图像加载一次,如果我尝试加载图片,则系统会在错误之后出现错误如果我再次尝试加载图像,则图像将加载到 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;
    }
}

Error Code android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

最佳答案

你有一个 Thread 冲突,你需要重新检查那里的调用和同步任务, 快速解决您的问题

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        new findpicture().execute();
    }
});

关于android - 如何使用 JDBC Drive 将 MySql 表图像 (BLOB) 加载到 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53866370/

相关文章:

Android Studio 安装不适用于 gradle

android - 使用 robospice 在 ListView 中延迟加载图像

java - 如何在 Android 运行时 (ART) 上启用语言级断言?

java - 有没有办法在我自己的应用程序中使用 Android 上的 native 消息应用程序?

java - 无法使用 Firebase 将元素添加到 ArrayList

android - 如何在选择文本时触发事件,例如启动应用程序

android - Gradle构建永远不会在Android Studio中停止

java - Android Studio AVD 未检测到 JRE

android - 如何在Android中以滑动效果在较小的ImageView中显示较大的图像?

android - 我正在尝试移动图像,但对于我的相对布局来说太大了吗?