c# - 如何从mysql数据库显示图像到datagridview

标签 c# mysql datagridview

我必须创建一个窗口窗体,它将绑定(bind)到 DataGridView 的 MySQL 表,我的 DataGridView 看起来像这样

ID     Name      PIC
1      Leo       64BaseStringImage
2      hello     64BaseStringImage

通过使用此代码

mcon.Open();
MySqlDataAdapter MyDA = new MySqlDataAdapter();
string sqlSelectAll = "SELECT id,name,pic from stockitem ORDER BY id ASC, name ASC";
MyDA.SelectCommand = new MySqlCommand(sqlSelectAll, mcon);

DataTable table = new DataTable();
MyDA.Fill(table);

BindingSource bSource = new BindingSource();
bSource.DataSource = table;

this.dataGridView1.DataSource = bSource;
DataGridViewColumn column = dataGridView1.Columns[2];
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;

//dataGridView1.DataBindings.Add("Image", mbsPrimario, "PICFIELD", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);

mcon.Close();

有没有可能让DataGridView变成这样?

ID   Name    PIC
1    Leo     Image
2    Hello   Image

我用它来解码图像和成功

Byte[] bitmapData = Convert.FromBase64String(FixBase64ForImage(abc));
System.IO.MemoryStream streamBitmap = new System.IO.MemoryStream(bitmapData);
def = new Bitmap((Bitmap)Image.FromStream(streamBitmap));

但我不知道如何获取每个字符串图像,对其进行解码,然后再插入回数据源。

最佳答案

字符串转图片的方式是这样的,

    private void MySQL_ToDatagridview4()
{
    dataGridView3.Columns.Clear();
    mcon.Close();
    mcon.Open();
    MySqlDataAdapter MyDA = new MySqlDataAdapter();
    string sqlSelectAll = "SELECT Item_Name,Item_Pic from stockitem ORDER BY Main_Category_ID ASC, Item_Name ASC";
    MyDA.SelectCommand = new MySqlCommand(sqlSelectAll, mcon);
    DataTable table = new DataTable();
    MyDA.Fill(table);
    BindingSource bSource = new BindingSource();
    bSource.DataSource = table;
    this.dataGridView3.DataSource = bSource;
    DataGridViewImageColumn imageColumn = new DataGridViewImageColumn();
    imageColumn.HeaderText = "Pic";
    dataGridView3.Columns.Insert(0, imageColumn);
    for (int i = 0; i < table.Rows.Count; i++)
    {
        try
        {
            String pic = table.Rows[i]["Item_Pic"].ToString();
            Byte[] bitmapData = Convert.FromBase64String(FixBase64ForImage(pic));
            System.IO.MemoryStream streamBitmap = new System.IO.MemoryStream(bitmapData);
            def = new Bitmap((Bitmap)Image.FromStream(streamBitmap));
        }
        catch (Exception e)
        {
            MessageBox.Show(e.StackTrace);
        }
        dataGridView3.Rows[i].Cells[0].Value = def;
    }
    dataGridView3.Columns.Remove("Item_Pic");
    foreach (DataGridViewRow row in dataGridView3.Rows)
    {
        row.Height = 110;
    }
    foreach (DataGridViewColumn col in dataGridView3.Columns)
    {
        col.Width = 110;
    }

    for (int i = 0; i < dataGridView3.ColumnCount; i++)
    {
        dataGridView3.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
        dataGridView3.AutoResizeColumns();
        dataGridView3.Columns[i].DefaultCellStyle.Font = new System.Drawing.Font("Verdana", 8F, FontStyle.Bold);
    }
    mcon.Close();
}

关于c# - 如何从mysql数据库显示图像到datagridview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38845302/

相关文章:

C# 窗体 : Relative position of growing elements c# windows forms

c# - 使用 XmlNamespaceManager 从 XmlNode 中选择

c# - NHibernate 按代码映射和 IUsertype 不工作

mysql - 如何获取MySql数据库中多个表的日期?

mysql - 表格格式问题

c# winforms - DataGridView 重新加载后保存位置

c# - 我如何以编程方式操作 Windows 7 屏幕键盘 osk : Move, 调整大小,删除标题栏/标题

c# - SqlException 事务在通信缓冲区资源上被死锁

php - 使用 PHP 和 mySQL 从数据库检索登录用户信息时遇到问题

c# - 如何让datagridview在离开一行时自动保存记录