C#Image from Database to DataGridView

时间:2016-01-26 20:21:13

标签: c# mysql winforms datagridview

我是C#的新手,所以我遇到了很多问题。我有一个带有SQL数据库的Windows窗体,当我在DataGridView中选择例如user 1时,我希望看到我用PictureBox和TextBox中的其余数据保存的图片。我知道我的问题是什么,但不知道如何修复它。

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的代码我得到一个错误我知道我必须将colum更改为图像列或类似的东西但是没有到目前为止,我找到了适合我的方法。

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();
    }

来自datagridview的事件。不知道在这里添加什么以及如何添加。但必须是像

这样的东西
imagebox.image = row.Cell[10].Value.Image();

我想问题是datagridview的行从数据库中得到1比1,我应该手动创建它们,但后来我犯了更多错误。

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

2 个答案:

答案 0 :(得分:0)

我相信你的问题是你没有投入去获得这种属性 试试这个:

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

如果您的代码没有任何其他问题,则应该与您合作

答案 1 :(得分:0)

你使用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;
    }