access数据库插入图片
我这个是ACCESS数据库你参考一下
//save picture
OleDbConnection mycnn=new OleDbConnection("provider=Microsoft.jet.oledb.4.0;data source=f://dazhu.mdb");
mycnn.Open();
OleDbCommand mycmd=new OleDbCommand("update info set picture=@a",mycnn );
FileStream mystream=new FileStream("f://1.jpg",FileMode.Open,FileAccess.Read);
long len=mystream.Length;
mycmd.Parameters.Add("@a",OleDbType.Binary,(int)len,"picture");
mycmd.Parameters["@a"].Direction=System.Data.ParameterDirection.Input;
byte []box=new byte[len];
mystream.Read(box,0,(int)len);
mycmd.Parameters["@a"].Value=box;
//更新
mycmd.ExecuteNonQuery();
MessageBox.Show("ok");
mystream.Close();
mycnn.Close();
显示图片
OleDbConnection mycnn=new OleDbConnection("provider=Microsoft.jet.oledb.4.0;data source=f://dazhu.mdb");
mycnn.Open();
MessageBox.Show("ok.mycnn.open");
OleDbCommand mycmd=new OleDbCommand("select * from info",mycnn );
OleDbDataReader myrd=mycmd.ExecuteReader();
if(myrd.Read())
{
//读取图片
byte []box=(byte [])myrd["picture"];
//构造流
Stream stream1=new MemoryStream(box);
this.pictureBox2.Image=System.Drawing.Image.FromStream(stream1);
stream1.Close();
}
mycnn.Close();
SQL数据库
mycnn=new SqlConnection(@"server=zhurongj;database=my1;Trusted_connection=yes");
mycnn.Open();
SqlCommand mycmd=new SqlCommand("update picture set picture=@a where ID=1",mycnn);
FileStream mystream=new FileStream("f://1.jpg",FileMode.Open,FileAccess.Read);
long len=mystream.Length;
mycmd.Parameters.Add("@a",SqlDbType.Image,(int)len,"picture");
mycmd.Parameters["@a"].Direction=System.Data.ParameterDirection.Input;
byte []box=new byte[len];
mystream.Read(box,0,(int)len);
mycmd.Parameters["@a"].Value=box;
//更新
mycmd.ExecuteNonQuery();
MessageBox.Show("ok");
mystream.Close();
mycnn.Close();
显示到PICTURE控件
mycnn=new SqlConnection(@"server=zhurongj;database=my1;Trusted_connection=yes");
mycnn.Open();
MessageBox.Show("ok.mycnn.open");
SqlCommand mycmd=new SqlCommand("select * from picture",mycnn);
SqlDataReader myrd=mycmd.ExecuteReader();
if(myrd.Read())
{
//读取图片
if(!myrd.IsDBNull(1))
{
byte []box=(byte [])myrd[1];
//构造流
Stream stream1=new MemoryStream(box);
this.pictureBox2.Image=System.Drawing.Image.FromStream(stream1);
stream1.Close();
}
else
{
MessageBox.Show("该字段是NULL");
}
}
mycnn.Close();
}
catch(Exception my)
{
MessageBox.Show(my.Message.ToString());
}
把我刚才发的两个方法Copy过到同一文件去.然后把这句话改了,试一下
cmd.Parameters.Add(new SqlParameter("@photo",SqlDbType.Image));
cmd.Parameters["@photo"].Value = ConvertImage(System.Drawing.Image.FromFile("c://w.jpg"));
如果是子窗口的模式,是可以通过以下代码判断出某个子窗体是否已经打开:
form2 f = new form2();
foreach(Form key in this.MdiChildren)
{
if(key.Name.ToUpper() == f.Name.ToUpper())
{
return;
}
}
f.Show();
这篇博客介绍了如何在Access数据库中插入和显示图片。通过使用OleDbConnection和OleDbCommand,博主展示了如何将图片保存到数据库的Binary字段,并通过MemoryStream从数据库中读取并显示到pictureBox控件上。此外,还提及了SQL Server数据库的操作方式作为对比。
1535

被折叠的 条评论
为什么被折叠?



