从数据库到 DataGridView 的 C# 图像

本文关键字:图像 DataGridView 数据库 | 更新日期: 2023-09-27 18:31:56

我真的是C#的新手,所以我有很多问题。我有一个带有SQL数据库的Windows窗体,我想查看我保存的图片以及PictureBox中的其余数据,并在选择例如DataGridVie user 1TextBoxes。我知道我的问题是什么,但不知道如何解决它。

void Load_table()
{
    try
    {
        string myConnectionstring = "datasource=localhost;port=3306;  username=root;password=root";
        MySqlConnection myConnection = new MySqlConnection(myConnectionstring);
        MySqlCommand myCommand = new MySqlCommand("SELECT idBenutzerdaten, name, vorname, straße, hausnr, plz, wohnort, telenr, personr, schlossnr, picture FROM testdb.benutzerdaten;", myConnection);
        MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();
        myDataAdapter.SelectCommand = myCommand;
        myDataTable = new DataTable();
        myDataAdapter.Fill(myDataTable);
        BindingSource mySource = new BindingSource();
        mySource.DataSource = myDataTable;
        dataGridView.DataSource = mySource;
        myDataAdapter.Update(myDataTable);
    }
    catch (Exception fehler)
    {
        MessageBox.Show("Es gibt ein Problem mit der Datenbank'n" + fehler.Message, "Datenbankfehler ", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

这是将数据从数据库获取到DataGridView的代码。当我也想获取保存的图像时,我收到错误。我知道我必须将列更改为图像列或类似的东西,但到目前为止我发现什么都不适合我。

private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
    panel.Enabled = false;
    DataGridViewCell cell = null;
    foreach (DataGridViewCell selectedCell in dataGridView.SelectedCells)
    {
        cell = selectedCell;
        break;
    }
    if (cell != null)
    {
        DataGridViewRow row = cell.OwningRow;
        tbx_id.Text         = row.Cells[0].Value.ToString();
        tbx_name.Text       = row.Cells[1].Value.ToString();
        tbx_vorname.Text    = row.Cells[2].Value.ToString();
        tbx_strasse.Text    = row.Cells[3].Value.ToString();
        tbx_hausnr.Text     = row.Cells[4].Value.ToString();
        tbx_plz.Text        = row.Cells[5].Value.ToString();
        tbx_wohnort.Text    = row.Cells[6].Value.ToString();
        tbx_telenr.Text     = row.Cells[7].Value.ToString();
        tbx_perso.Text      = row.Cells[8].Value.ToString();
        tbx_schlossnr.Text  = row.Cells[9].Value.ToString();
    }
}

数据网格视图中的事件。不确定在此处添加什么以及如何添加。但必须是类似的

imagebox.image = row.Cell[10].Value.Image();

我想问题是 datagridview 的行来自数据库的 1 到 1,我应该手动创建它们,但随后我遇到了更多错误。

任何帮助将不胜感激。谢谢。

从数据库到 DataGridView 的 C# 图像

是否使用 blob 来存储图像? 只是投射它

imagebox.image =  byteArrayToImage(row.Cell[10].Value));
public Image byteArrayToImage(byte[] byteArrayIn)
{
     MemoryStream ms = new MemoryStream(byteArrayIn);
     Image returnImage = Image.FromStream(ms);
     return returnImage;
}
我相信

你的问题是你不是为了获得属性而铸造的。试试这个:

imagebox.image = ((DataGridViewImageColumn)row.Cell[10]).Image(); 
// or try this :
imagebox.image = (Image)row.Cell[10].Value;

如果你的代码没有任何其他问题,这些应该可以和你一起工作