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 +')";
这样的添加行不通
向做过这方面的朋友求助一下
谢谢
{
//利用选择文件对话框选取图像文件
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 +')";
这样的添加行不通
向做过这方面的朋友求助一下
谢谢
需要'和+吗?@ bytes之间要加空格吗?有没有Parameters.Add()?
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();
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;
}
这是我在一个项目中使用的代码,你看看吧
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();
{
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()); }