日期:2014-05-19  浏览次数:20840 次

请问.net C#里我如何把一副图保存到SQL里
RT

------解决方案--------------------
================================
据库结构
create table test
{
id int identity(1,1),
FImage image
}


相关的存储过程
Create proc UpdateImage (@UpdateImage Image)
As
Insert Into test (FImage) values (@UpdateImage)
GO


OpenFileDialog openfileDialog = new OpenFileDialog();
openfileDialog.Filter = "Picture Files(*.jpg)|*.jpg|Bmp(*.bmp)|*.bmp|All Files(*.*)|*.* ";
FileStream fileStream;
openfileDialog.ShowDialog();
string filepath = openfileDialog.FileName;
if (filepath.Trim() != " ")
{
//获得图象并把图象转换为byte[]
fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);
byte[] photoArray = new byte[(int)fileStream.Length];
fileStream.Read(photoArray, 0, photoArray.Length);
fileStream.Close();
try
{
pictureBox1.SizeMode = PictureBoxSizeMode.Normal;
pictureBox1.Image = System.Drawing.Image.FromFile(filepath);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//连接数据库
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = "Data Source=localhost;Database=test;User Id=sa;Pwd=sa ";
SqlCommand mySqlCommand = new SqlCommand( "UpdateImage ", myConnection);
mySqlCommand.CommandType = CommandType.StoredProcedure;
mySqlCommand.Parameters.Add( "@UpdateImage ", SqlDbType.Image);
mySqlCommand.Parameters[ "@UpdateImage "].Value = photoArray;
//如果不使用存储过程,可以把上面四句代码改为:
//string strSql= "Insert into test(FImage) values(@FImage) ";
//SqlCommand cmd=new SqlCommand(strSql,conn);
//cmd.Parameters.Add( "@FImage ",SqlDbType.Image);
//cmd.Parameters[ "@FImage "].Value=photoArray;
myConnection.Open();
mySqlCommand.ExecuteNonQuery();
myConnection.Close();
}
//以下是从数据库读取图片
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=localhost;Database=test;User Id=sa;Pwd=sa ";
string strSql = "select FImage from test where id=1 ";
SqlCommand cmd = new SqlCommand(strSql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
MemoryStream ms = new MemoryStream((byte[])reader[ "FImage "]);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
reader.Close();
conn.Close();
pictureBox1.Image = image;