C#+SQL Server图片存取
2010-09-26 14:00
295 查看
利用数据库存取图片是数据库应用系统开发时的一项基本功能需求。目前为实现该功能,主要有两种方法。方法①:在数据库中只存放图片路径。方法②:图片转为二进制流保存Image类型的字段里。
第一种方法固然简单,容易实现,但在实际中也存在一个问题。数据库中存储的是某图片的路径,那么对应的在该路径所对应的文件夹里就应该存放有该图片文件。而我们在使用计算机时,经常有更改文件名、移动、删除文件等操作,那么在系统运行过程中,从数据库中读取图片路径来取出图片时候就会发生错误。第二种方法实现起来相对困难一点,但却很好的避免了上述问题。在操作中选择计算机中任何位置的图片,然后以二进制流的方式存储于数据库中,读取时从数据库中读取对应图片的二进制流,然后转换为图片显示给用户。
下面给出方法二的实现效果及核心代码。
功能实现核心代码如下:
//存储文件打开对话框中所选取的图片到数据库中
//从数据库中读取树控件中所选节点所对应的图片显示给用户
附:数据库中Pictures表的建表T-SQL语句
第一种方法固然简单,容易实现,但在实际中也存在一个问题。数据库中存储的是某图片的路径,那么对应的在该路径所对应的文件夹里就应该存放有该图片文件。而我们在使用计算机时,经常有更改文件名、移动、删除文件等操作,那么在系统运行过程中,从数据库中读取图片路径来取出图片时候就会发生错误。第二种方法实现起来相对困难一点,但却很好的避免了上述问题。在操作中选择计算机中任何位置的图片,然后以二进制流的方式存储于数据库中,读取时从数据库中读取对应图片的二进制流,然后转换为图片显示给用户。
下面给出方法二的实现效果及核心代码。
功能实现核心代码如下:
//存储文件打开对话框中所选取的图片到数据库中
//存储文件打开对话框中所选取的图片到数据库中 this.picView.ImageLocation = openFileDlg.FileName; using (SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Picture;Integrated Security=True")) { try { strID = 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.ExecuteNonQuery(); 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 image_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语句
USE [Picture] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE 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]
相关文章推荐
- C#+SQL Server图片存取
- C#+SQL Server图片存取
- C#+SQL Server图片存取
- 存储图片(C#+Winform+SQL Server)
- C#在SQl中存取图片image
- c#在sql中存取图片image示例
- C# 向Sql-server数据库保存图片
- c#操作sql中存取图片image
- ASP.NET实现写入和读取图片(C#+SQL Server)
- C#在SQl中存取图片image
- 存储图片(C#+Winform+SQL Server)
- C#在SQl中存取图片image[原]
- c# SQLServer 数据库连接类
- 把图片保存到sql server数据库里
- 关于在SQL存取JPEG图片的方法一
- C# SqlServer 未定字段未定条件的组合查询写法
- How to Find All SQL Server Instance Running in Local Network c#
- Ext sqlserver C# 数据库备份还原代码,给大家参考下
- 关于transaction(C#\SQL-Server)