方法一:在数据库中添加图片名字,然后把图片存在指定的文件夹中
这种方法存起来简单,但是删除的时候麻烦。
存:在数据库中建一个文本字段(access)或者varchar字段(sqlserver)长度能放上一张图片即可
过程:就是一般的存的insert into
举个栗子:sql数据库中有一个id字段 自增类型 一个name字段,用于存放图片名称的类型是varchar类型
这winform界面中你可以拖动一个TextBox,用于存放路径,一个Button这个就不说了,还有一个openFileDialog
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
this.textBox1.Text = openFileDialog1.FileName;
} //打开路径,必不可少的 这些都是是在button单击事件里完成的
if (openFileDialog1.FileName.Length > 0) // 判断openFileDialog1路径的长度
{
string oldName = openFileDialog1.FileName; //定义一个string类型的变量 用于存放【文件路径】
string[] splitName = oldName.Split('.'); //为获取文件的扩展名做准备的
string ext = splitName[splitName.Length - 1]; //文件的扩展名
if (ext == "jpg" || ext == "gif" || ext == "bmp" || ext == "JPG") //限制上传图片的格式
{
string dbName = DateTime.Now.ToString("yyyyMMddhhmmss") + "." + ext; //给上传的图片起个名字!以时间命名
string newName = AppDomain.CurrentDomain.BaseDirectory + dbName; //新路径!这是个相对路径
File.Copy(oldName, newName, true); //把文件从以前的路径复制到新的路径中去
//下面就开始添加到数据库里面了
string constring="";//数据库的连接字符串
using (SqlConnection con=new SqlConnection (constring))
{
con.open();
stirng sql="insert into shujukuname (name) values(@name)"; //因为id自增的这里只需要添加图片名称
SqlCommand cmd = new SqlCommand(sql,con);
cmd.Parameters.Add("@name",SqlDbType.VarChar).Value=TextBox1.Text.Trim();
cmd.ExecuteNonQuery();
con.Close();
}
}
} //这样就添加完成了
显示图片: 这里一定要有一个PictureBox1
要从数据库中取出这个name
using (SqlConnection con=new SqlConnection (constring))
{
string sql="select name from shujukuname where id=' 1' ";//当id=1的时候查询的图片的名称
SqlDataAdapter da = new SqlDataAdapter(sql, con);
con.Open();
DataTable dt=new DataTable();
da.Fill(dt);
string name =dt.Rows[0]["name"].ToString();
con.Close(); //这样就获取出name来了,然后进行显示
}
string path=Application.StartupPath + "//"+ name; //一张图片的路径
if(File.Exists(path)) //根据这个路劲显示有没有这张图片
{
PictureBox1.Image=Image.FromFile(path); //PictureBox1显示的path路径的图片
}
else
{
PictureBox1.Image=Image.FromFile(Application.StartupPath + "//" +默认图片); //PictureBox1显示的默认的的图片
}
winform 中往数据库中添加图片的两种方式之二:直接把图片添加在sqlserver中
首先要有一个image或者binary类型的字段
这种是以二进制形式插入到数据库中
FileStream fs = new FileStream(pathName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] buffByte = new byte[fs.Length];
fs.Read(buffByte, 0, (int)fs.Length);
fs.Close(); //数据库字段为image类型,将图片转化为byte[],保存到数据库
SqlConnection db = new SqlConnection(strConn);
db.Open();
string strSQL = "INSERT INTO shujuktable (name) values (@name) ";
SqlCommand cmd = new SqlCommand(strSQL, db);
cmd.Parameters.Add( "@name", SqlDbType.Image);
cmd.Parameters[ "@name"].Value = buffByte;
cmd.ExecuteNonQuery(); //保存图片的过程
清理资源
以上这部分是如何添加图片,下面这部分是读取图片
-————————————————————————————————————————————————
SqlConnection conn = new SqlConnection(strConn);
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter("select name from shujuktable where ID='1'", conn);
adp.Fill(dt);
byte[] buffByte = (byte[])dt.Rows[0][“name”];
MemoryStream ms = new MemoryStream(buffByte);
Image image = Image.FromStream(ms, true);
this.pictureEdit1.Image = image;