// --------------------------上传图片并保存至数据库--------------------------------------
// 从本地文件中读取图片
System.IO.FileStream fs = new System.IO.FileStream(picPath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
// 创建buff存储二进制数据
byte[] buffbyt = new byte[fs.Length];
fs.Read(buffbyt, 0, (int)fs.Length);
// 关闭文件流
fs.Close();
fs = null;
// 创建写入数据库的SQL 语句 用占位符代表图片变量
string comm = "insert into trafficsign (codeId ,picture) values ('" + dtInfo.Rows[0].Cells[0].Value.ToString() +"',@img,');";
SqlCommand cmd = new SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = comm;
cmd.Connection = conn;
// SQL 语句的参数的数据类型是Image 和创建数据库要保持一致
cmd.Parameters.Add("@img", System.Data.SqlDbType.Image);
cmd.Parameters[0].Value = buffbyt;
// 执行SQL语句
cmd.ExecuteNonQuery();
buffbyt = null;
MessageBox.Show("上传成功!");
// ---------------------------------下载图片显示并存储-------------------------------------
string sql = "select codeId as 标识编码,picture from trafficsign where id = " + id;
SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);
DataSet testDataSet = new DataSet();
// 创建DataSet,用于存储数据
adapter.Fill(testDataSet, "result_data");
InfoRow = testDataSet.Tables["result_data"].Rows[0];
byte[] buffByte = null;
buffByte = (byte[])InfoRow["picture"];
// 创建内存的流数据
System.IO.MemoryStream ms = new System.IO.MemoryStream(buffByte);
// 将文件流转换成图片数据
System.Drawing.Bitmap bmp = new Bitmap(ms);
// 将内存中的图片数据设定为picture box 的数据源
picBOX.Image = bmp;
// 将内存中的图片数据存储至硬盘上
bmp.Save(currPath + "//images// aaa.jpg");