将存照片的字段设为image类型。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PhotoSQL { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string sqlCon = ""; private void button1_Click(object sender, EventArgs e) { string url = @"C:UsersjinweiDesktop iger.jpg"; byte[] dd = GetPictureData(url); ImgToDB(dd);//保存到数据库中 } private void button2_Click(object sender, EventArgs e) { ImgDBTo(); } /// <summary> /// 保存到数据库 /// </summary> /// <param name="imgBytesIn"></param> private void ImgToDB(byte[] imgBytesIn) { try { SqlConnection con = new SqlConnection("server=SDSC2-1,1433;uid=sa;pwd=jinwei;database=web"); con.Open(); SqlCommand cmd = new SqlCommand("insert into aaaa (img) values( @Image ) ;", con); cmd.Parameters.Add("@Image", SqlDbType.Image); cmd.Parameters["@Image"].Value = imgBytesIn; cmd.ExecuteNonQuery(); con.Close(); MessageBox.Show("图片上传成功"); } catch { MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } /// <summary> /// 从数据库中 图片 并且保存到C盘 /// </summary> public void ImgDBTo() { byte[] MyData = new byte[0]; using (SqlConnection conn = new SqlConnection("server=SDSC2-1,1433;uid=sa;pwd=jinwei;database=web")) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select * from aaaa"; SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); object o = sdr["img"]; MyData = (byte[])sdr["img"];//读取第一个图片的位流 int ArraySize = MyData.GetUpperBound(0);//获得数据库中存储的位流数组的维度上限,用作读取流的上限 FileStream fs = new FileStream(@"c: 0.jpg", FileMode.OpenOrCreate, FileAccess.Write); fs.Write(MyData, 0, ArraySize); fs.Close(); //-- 写入到c: 0.jpg。 conn.Close(); Console.WriteLine("读取成功");//查看硬盘上的文件 } } /// <summary> /// 根据路径将图片转换成 byte[] /// </summary> /// <param name="imagepath"></param> /// <returns></returns> public byte[] GetPictureData(string imagepath) { /**/ ////根据图片文件的路径使用文件流打开,并保存为byte[] FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重载方法 byte[] byData = new byte[fs.Length]; fs.Read(byData, 0, byData.Length); fs.Close(); return byData; } } }
转载来源: