Как проверить, существует изображение или нет в базе данных и показать в картинке, используя значение выпадающего списка в приложении c # windows - PullRequest
0 голосов
/ 22 ноября 2018

Я использую форму Windows, я пишу код для получения изображения из базы данных в графическом окне, когда выбрано значение поля со списком.мой код работает правильно, когда в поле со списком выбрано значение и отображать данные (показывать только данные с изображением).НО у меня есть данные без изображения, когда я выбираю значение поля со списком, чтобы показать данные, у которых нет изображения, это показывает мне «ОШИБКА» - «Параметр недействителен».

Я пытался, если условие на немно код не работает для меня.

вот код ...

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            using (SQLiteConnection conn = new SQLiteConnection("Data Source=combolist.db;Version=3;"))
            {
                string CommandText = "SELECT * FROM combo WHERE [Id]=@id";
                using (SQLiteCommand cmd = new SQLiteCommand(CommandText, conn))
                {
                    cmd.Parameters.AddWithValue("@id", comboBox1.SelectedItem.ToString());
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    DataTable dt = new DataTable();
                    SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
                    da.Fill(dt);
                    foreach (DataRow dr in dt.Rows)
                    {
                        textBox1.Text = dr["Id"].ToString();
                        textBox2.Text = dr["FirstName"].ToString();
                        textBox3.Text = dr["LastName"].ToString();
                        textBox4.Text = dr["Age"].ToString();
                        textBox5.Text = dr["Address"].ToString();

                        byte[] img = (byte[])(dr["Pic"]);
                        if (img == null)
                        {
                            pictureBox1.Image = null;
                        }
                        else
                        {
                            MemoryStream ms = new MemoryStream(img);
                            pictureBox1.Image = System.Drawing.Image.FromStream(ms);
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

помогите пожалуйста ....

1 Ответ

0 голосов
/ 22 ноября 2018

Это приведение byte[] img = (byte[])(dr["Pic"]); выдает ошибку, если значение равно нулю.

Я бы проверил, если dr["Pic"] != null, а затем:

if(dr["Pic"] != null){
      MemoryStream ms = new MemoryStream((byte[])(dr["Pic"]));
      pictureBox1.Image = ms != null ? System.Drawing.Image.FromStream(ms) : null;
 } else {
    pictureBox1.Visible = false;
    //or pictureBox1.Image = null;
 }

Обновление: Это: cmd.Parameters.AddWithValue("@id", comboBox1.SelectedItem.ToString()); должно быть cmd.Parameters.AddWithValue("@id", comboBox1.SelectedValue.ToString());

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