如果图像为空,则打印消息

问题描述 投票:0回答:1

我正在使用android studio开发图库应用程序以其名称存储在数据库中。但是当我尝试将空图像添加到数据库时,停止运行。当空数据来自用户时,应打印一个Toast消息,如请选择图像或插入名称。我尝试了保存按钮的onClick方法,但没有工作。这是我试过的:

     public void save (View view) {

        String artName = editText.getText().toString();
        //sikistirma islemi
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        selectedImage.compress(Bitmap.CompressFormat.PNG,50,outputStream);
        byte[] byteArray = outputStream.toByteArray();

        try {
            if(artName!=null && outputStream!=null)
            {
                database = this.openOrCreateDatabase("Arts", MODE_PRIVATE, null);
                database.execSQL("CREATE TABLE IF NOT EXISTS arts (name VARCHAR, image BLOB)"); //BLOB is dataType for images

                String sqlString = "INSERT INTO arts (name, image) VALUES (?, ?)";
                SQLiteStatement statement = database.compileStatement(sqlString);
                statement.bindString(1, artName);
                statement.bindBlob(2, byteArray);
                statement.execute();
            }
            else
            {
                Toast.makeText(getApplicationContext(), "PPlease select an image or insert the name", Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        startActivity(intent);
    }
android database sqlite
1个回答
0
投票

假设selectedImage是一个位图对象,在您的代码中,可以在将其插入数据库之前检查它是否为null

public void save (View view) {

    String artName = editText.getText().toString();
    if(selectedImage!=null)
   {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    selectedImage.compress(Bitmap.CompressFormat.PNG,50,outputStream);
    byte[] byteArray = outputStream.toByteArray();

    try {
        if(artName!=null )
        {
            database = this.openOrCreateDatabase("Arts", MODE_PRIVATE, null);
            database.execSQL("CREATE TABLE IF NOT EXISTS arts (name VARCHAR, image BLOB)"); //BLOB is dataType for images

            String sqlString = "INSERT INTO arts (name, image) VALUES (?, ?)";
            SQLiteStatement statement = database.compileStatement(sqlString);
            statement.bindString(1, artName);
            statement.bindBlob(2, byteArray);
            statement.execute();
        }
        else
        {
            Toast.makeText(getApplicationContext(), "Please  insert the name", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
    startActivity(intent);
    }
    else
  {
     // If the bitmap object is null display user toast to select the image 
      Toast.makeText(getApplicationContext(), "Please select some image", Toast.LENGTH_LONG).show();

  }

}
© www.soinside.com 2019 - 2024. All rights reserved.