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 +')";
这样的添加行不通
向做过这方面的朋友求助一下
谢谢

解决方案 »

  1.   

    ('@ bytes +')什么意思?
    需要'和+吗?@ bytes之间要加空格吗?有没有Parameters.Add()?
      

  2.   

    我用"Insert Into 数据库表名(字段名) Values('@ bytes ')";
      

  3.   

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

  4.   

    //插入图片记录;
    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;
    }
    这是我在一个项目中使用的代码,你看看吧
      

  5.   

    同意Aallonlin(风之力)与 3000sunqin(3000suqnin)
      

  6.   


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

  7.   

    读取图片: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()); }
      

  8.   

    http://dahuzizyd.cnblogs.com/archive/2004/07/27/27787.html