![](/img/trans.png)
[英]display data from database in datagridview with entity framework in c#
[英]c# Display data from database in datagridview
我正在尝试将图像插入sql server,然后我想在c#中的datagridview中进行渲染。我从互联网上获得了此代码。 我正在遵循数据库方案
create table product
(
product_id int not null primary key identity,
product_serialno varchar(10) not null unique,
product_name varchar(60) not null,
brand_id int,
category_id int,
img varbinary,
remarks text
)
我使用以下代码进行插入
MemoryStream ms = new MemoryStream();
Picture.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] pic_arr = new byte[ms.Length];
SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["conSetting"]);
String sql = "Insert into product(product_serialno,product_name,brand_id,category_id,img,remarks) values(@product_serialno,@product_name,@brand_id,@category_id,@img,@remarks)";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@product_serialno",txtProductSerial.Text);
cmd.Parameters.AddWithValue("@product_name",txtProductName.Text);
cmd.Parameters.AddWithValue("@brand_id",txtbrand.Text);
cmd.Parameters.AddWithValue("@category_id",txtcategory.Text);
cmd.Parameters.AddWithValue("@img",pic_arr);
cmd.Parameters.AddWithValue("@remarks",txtRemarks.Text);
try
{
con.Open();
int i = cmd.ExecuteNonQuery();
}catch (Exception ex)
{
MessageBox.Show("Enter all required field", "Error !!");
}finally
{
con.Close();
reset();
}
现在,我尝试使用以下代码在datagridview中显示它
SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["conSetting"]);
String sql = "Select * From product";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader dataReader;
try
{
con.Open();
dataReader = cmd.ExecuteReader();
try
{
while (dataReader.Read())
{
byte[] img= (byte[])dataReader.GetValue(5);
MemoryStream ms = new MemoryStream(img);
//dataGridView1.
dataGridView1.Rows.Add(dataReader[0].ToString(), dataReader[1].ToString(), dataReader[2].ToString(), dataReader[3].ToString(), dataReader[4].ToString(), Image.FromStream(ms), dataReader[6].ToString());
}
}catch(Exception ex)
{
MessageBox.Show(ex.ToString(),"Exception");
}
}catch (Exception ex){
}finally{
con.Close();
}
我在渲染图像时遇到错误。 如果有人帮助我解决这个问题,那就太好了。
将映像写入数据库时,您缺少一些步骤
MemoryStream ms = new MemoryStream();
Picture.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
// Reposition the Memory stream to the beginning of the data
ms.Seek (0, SeekOrigin.Begin);
// Allocate the array
byte[] pic_arr = new byte[ms.Length];
// Read the bytes into the array
ms.Read (pic_arr, 0, ms.Length);
现在,您的数组包含要写入数据库的有效字节。
我还建议您不要使用AddWithValue,而应将更精确的Add与参数的特定数据类型一起使用。 虽然众所周知, AddWithValue方便使用,但它是数据库引擎的错误和性能不佳的根源
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.