1、利用数据库存取图片是数据库应用系统开发时的一项基本功能需求。目前为实现该功能,主要有两种方法。方法:在数据库中只存放图片路径。方法:图片转为二进制流保存 Image 类型的字段里。 第一种方法固然简单,容易实现,但在实际中也存在一个问题。数据库中存储的是某图片的路径,那么对应的在该路径所对应的文件夹里就应该存放有该图片文件。而我们在使用计算机时,经常有更改文件名、移动、删除文件等操作,那么在系统运行过程中,从数据库中读取图片路径来取出图片时候就会发生错误。第二种方法实现起来相对困难一点,但却很好的避免了上述问题。在操作中选择计算机中任何位置的图片,然后以二进制流的方式存储于数据库中,读取时从数
2、据库中读取对应图片的二进制流,然后转换为图片显示给用户。下面给出方法二的实现效果及核心代码。功能实现核心代码如下: /存储文件打开对话框中所选取的图片到数据库中存储文件打开对话框中所选取的图片到数据库中 /存储文件打开对话框中所选取的图片到数据库中this.picView.ImageLocation = openFileDlg.FileName;using (SqlConnection cn = new SqlConnection(“Data Source=.SQLEXPRESS;Initial Catalog=Picture;Integrated Security=True“)trystrI
3、D = Path.GetFileNameWithoutExtension(openFileDlg.FileName);strSql = “INSERT INTO image_table(ID,Pic) VALUES(“ + strID + “,Pic)“;using (SqlCommand cmd = new SqlCommand(strSql, cn)cmd.Parameters.Add(“Pic“, SqlDbType.Image).Value = File.ReadAllBytes(this.picView.ImageLocation);cn.Open();cmd.ExecuteNonQ
4、uery();cn.Close();catch (SqlException sqle)MessageBox.Show(sqle.Message);/从数据库中读取树控件中所选节点所对应的图片显示给用户从数据库中读取树控件中所选节点所对应的图片显示给用户 /从数据库中读取树控件中所选节点所对应的图片显示给用户using (SqlConnection cn = new SqlConnection(“Data Source=.SQLEXPRESS;Initial Catalog=Picture;Integrated Security=True“)strSql = “SELECT Pic FROM i
5、mage_table WHERE ID=“ + e.Node.Text + “;using (SqlCommand cmd = new SqlCommand(strSql,cn)cn.Open();this.picView.Image = Image.FromStream(new MemoryStream(byte)cmd.ExecuteScalar(),false);cn.Close();附:数据库中 Pictures 表的建表 T-SQL 语句数据库中 Pictures 表的建表 T-SQL 语句 USE PictureGOSET ANSI_NULLS ONGOSET QUOTED_IDE
6、NTIFIER ONGOCREATE TABLE dbo.image_table(ID nchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL,Pic image NOT NULL,CONSTRAINT PK_image_table PRIMARY KEY CLUSTERED (ID ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY TEXTIMAGE_ON PRIMARY十分感谢作者分享 原贴地址如下作者: 韩 锁 出处:http:/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。