C# Windows 程序中如何把图片文件添加到数据库(附源码及说明)up有分

zk911 2006-01-11 10:31:08
private void pictureBox1_DoubleClick(object sender, System.EventArgs e)
{
//利用选择文件对话框选取图像文件
OpenFileDialog openFileDialog1=new OpenFileDialog();
openFileDialog1.Filter="*.jpg;*.bmp;*.*|*.jpg;*.bmp;*.*";
//如果用户选取了图像文件
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
//产生Stream流对象
Stream myStream = openFileDialog1.OpenFile();
int length=(int)myStream.Length;
//产生字节数组对象
byte[] bytes=new byte[length];
//读取图像文件,将数据放入字节数组中。
myStream.Read(bytes,0,length);
myStream.Close();
if (bytes.Length > 0)
{
//在pictureBox1.Image里显示选中的图片
MemoryStream stream = new MemoryStream(bytes, true);
stream.Write(bytes, 0, bytes.Length);
DrawToScale(new Bitmap(stream));
stream.Close ();
}

}

}





现在遇到的问题是如何把上面选中的图片存储到sql数据库中
我用"Insert Into 数据库表名(字段名) Values('@ bytes +')";
这样的添加行不通
向做过这方面的朋友求助一下
谢谢
...全文
286 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lostowner 2006-01-12
  • 打赏
  • 举报
回复
关注
zk911 2006-01-12
  • 打赏
  • 举报
回复
谢谢各位 我先试试!!!
dazhu2 2006-01-12
  • 打赏
  • 举报
回复
读取图片:

try
{
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());

}
dazhu2 2006-01-12
  • 打赏
  • 举报
回复

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();
jxw2942 2006-01-12
  • 打赏
  • 举报
回复
恩 很好 继续关注一下
up
dahuzizyd 2006-01-12
  • 打赏
  • 举报
回复
http://dahuzizyd.cnblogs.com/archive/2004/07/27/27787.html
llevil 2006-01-11
  • 打赏
  • 举报
回复
不错,不错,进来看一下
3000sunqin 2006-01-11
  • 打赏
  • 举报
回复
//插入图片记录;
byte[] byteImageSpecialArray=null;
byte[] byteImageAllArray=null;
byte[] byteImageLicenseArray=null;
MemoryStream objMs;
objMs = new MemoryStream ();
if (objVehicleTrade.Picture.ImageSpecial !=null)
{
objVehicleTrade.Picture.ImageSpecial.Save(objMs,objVehicleTrade.Picture.ImageSpecial.RawFormat);
byteImageSpecialArray = objMs.GetBuffer();
objMs.Close();
}
if (objVehicleTrade.Picture.ImageAll !=null)
{
objVehicleTrade.Picture.ImageAll.Save(objMs,objVehicleTrade.Picture.ImageAll.RawFormat);
byteImageAllArray = objMs.GetBuffer();
objMs.Close();
}
if (objVehicleTrade.Picture.ImageLicense !=null)
{
objVehicleTrade.Picture.ImageLicense.Save(objMs,objVehicleTrade.Picture.ImageLicense.RawFormat);
byteImageLicenseArray = objMs.GetBuffer();
objMs.Close();
}
objMs = null;
objSqlCommand = null;
strSql = "Insert into WIMPicture(ImageSpecial,ImageAll,ImageLicense,RecordTime) Values(@ImageSpecial,@ImageAll,@ImageLicense,@RecordTime);";
objSqlCommand=new SqlCommand (strSql,objSqlConnection,objSqlTransaction);
objSqlCommand.Parameters.Add("@ImageSpecial",SqlDbType.Image);
objSqlCommand.Parameters.Add("@ImageAll",SqlDbType.Image );
objSqlCommand.Parameters.Add("@ImageLicense",SqlDbType.Image);
objSqlCommand.Parameters.Add("@RecordTime",SqlDbType.DateTime);
objSqlCommand.Parameters["@ImageSpecial"].Value = byteImageSpecialArray;
objSqlCommand.Parameters["@ImageAll"].Value = byteImageAllArray ;
objSqlCommand.Parameters["@ImageLicense"].Value = byteImageLicenseArray ;
objSqlCommand.Parameters["@RecordTime"].Value = objVehicleTrade.Picture.RecordTime;
try
{
objSqlCommand.ExecuteNonQuery();
}
catch(SqlException eSql)
{
clsLog objLog;
objSqlTransaction.Rollback();
objSqlConnection.Close();
objSqlConnection = null;
objLog = clsLogManager.getObjLog();
objLog.WriteLog("Class:clsVehicleTradeLogic Mothed:SaveVehicleTrade ErrorMessage:" + eSql.Message);
return -2;
}
这是我在一个项目中使用的代码,你看看吧
Aallonlin 2006-01-11
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4507/4507674.xml?temp=.4122431


string query = "INSERT INTO ImageTable (ImageData, ImageContentType) VALUES (@ImageData, @ImageContentType)";
SqlCommand myCommand = new SqlCommand(query, new SqlConnection(ConnStr));
// 添加各项参数并赋值
myCommand.Parameters.Add("@ImageData", SqlDbType.Image);
myCommand.Parameters.Add("@ImageContentType", SqlDbType.VarChar, 50);myCommand.Parameters["@ImageData"].Value = FileByteArray;
myCommand.Parameters["@ImageContentType"].Value = UpFile.ContentType;
// 执行数据库操作
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
zk911 2006-01-11
  • 打赏
  • 举报
回复
我用"Insert Into 数据库表名(字段名) Values('@ bytes ')";
ybzsu 2006-01-11
  • 打赏
  • 举报
回复
('@ bytes +')什么意思?
需要'和+吗?@ bytes之间要加空格吗?有没有Parameters.Add()?
wangxq_98 2006-01-11
  • 打赏
  • 举报
回复
同意Aallonlin(风之力)与 3000sunqin(3000suqnin)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧