你的问题关键在于对图片的读取与存储!
难点在于将图片文件转换为数据流。
SQLSEVER中的数据类型中有一个“Image”。
它就是用于存储图片的!
你先读取一个图片,将图片转换为FileStream,再用一个Byte[]数组表示二进制流,然后再将这个Byte数组存入SQLSERVER的“Image”字段!
程序你可以看看。读数据库中的图片:
System.Data.SqlClient.SqlConnection conn;
conn = new SqlConnection("server = LNX;Initial Catalog = avimdb; User Id = sa;Password = sa;");
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select C0103 from C01 ORDER BY C0101";//C0101为“Image”类型

System.Data.DataSet ds1;
SqlDataAdapter da = new SqlDataAdapter(cmd);

conn.Open();

ds1 = new DataSet();
da.Fill(ds1,"C01");
conn.Close();byte []Data;
Data = (byte[])ds1.Tables["C01"].Rows[0]["C0103"];
MemoryStream myStream = new MemoryStream(Data);
this.pictureBox1.Image = Image.FromStream(myStream);图片写入数据库:System.IO.FileStream fs;
System.Data.DataSet ds;
conn = new SqlConnection("server = LNX;Initial Catalog = pictest; User Id = sa;Password = sa;");
try
{
SqlCommand sqlcomm = new SqlCommand();
sqlcomm.Connection = conn;
//MessageBox.Show(conn.State.ToString());
sqlcomm.CommandText = "INSERT INTO pic1 (pic) VALUES (@pic)";//pic为“Image”类型
int fslength = (int)fs.Length;
byte []Data = new Byte[fslength];
fs.Read(Data,0,fslength);
SqlParameter prm1 = new SqlParameter("@pic",SqlDbType.VarBinary,fslength,ParameterDirection.Input,true,0,0,"",DataRowVersion.Current,Data);
sqlcomm.Parameters.Add(prm1);
conn.Open();
sqlcomm.ExecuteNonQuery();
}
catch (Exception ee)
{
MessageBox.Show (ee.Message.ToString());
}
conn.Close();
fs.Close();
示例代码只是表示一个方法,有些地方可能有

解决方案 »

  1.   

    但方法应该是这样了,你可以看看MSDN中的Stream类型!
      

  2.   

    SqlServer可以存储二进制数据。因此无论是图片还是其他文件你都可以把它存入数据库。
    利用Stream及其派生类型可以进行相关的操作。
    在显示的时候你可以将数据库中的内容转换为文件或者直接输出到浏览器。
    不久前我就做了一个这样的程序,很好用。
    具体的代码我就不贴了。
      

  3.   

    this.pictureBox1.Image = Image.FromStream(myStream);
    有错误,说是使用了无效的参数。
      

  4.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=45E7E33C-F149-450E-B5D5-832958C20538