sql server数据库中保存图片及图片管理 .

 

SQL SERVER数据库的Image字段来存储图片。对图片读取采用二进制和FileStream文件流。

其中还要用到数据库的存储过程来插入和读取图片信息记录的内容。数据库中的图片可以另存在硬盘上。支持常见的几个格式。

有主窗体的源代码。和程序的界面和(SQL2000的)源数据库。
附加数据库后就可以使用。
VB.Net+SQL 2000结合使用,是学习的vb.net+sql2000存储图片到数据库里面的帮手。

SQL存储过程:

CREATE PROCEDURE AddAndUpdateImg
@ImgID int,
@ImgName nvarchar(255),
@ImgDes nvarchar(1000),
@ImgExtName nvarchar(10),
@ImgTypeID int,
@UpdateTime smalldatetime,
@ImgBinary image
As
If Exists (Select 1 From ImgTB Where ImgID=@ImgID)
Begin
Update [ImgTB] Set ImgName=@ImgName,ImgDes=@ImgDes,ImgExtName=@ImgExtName,ImgTypeID=@ImgTypeID,UpdateTime=@UpdateTime,ImgBinary=@ImgBinary Where ImgID=@ImgID 
Select @@RowCount
End
Else
Begin

Declare @NewID smallint 
set @NewID=0
Select @NewID=IsNull(Max([ImgID]),0)+1 From [ImgTB] 
INSERT INTO [ImgTB] (ImgID,ImgName,ImgDes,ImgExtName,ImgTypeID,UpdateTime,ImgBinary) Values (@ImgID,@ImgName,@ImgDes,@ImgExtName,@ImgTypeID,@UpdateTime,@ImgBinary) 
Select @NewID
End


 

操作这个存储过程的一个VB.Net的函数:

 
Function AddAndUpdateImg() As Boolean  
        Dim fs As FileStream  
        Try  
            SqlConn = New SqlConnection(SQLClass.ConnectString)  
            SqlComm = New SqlCommand  
            SqlComm.Connection = SqlConn  
            SqlComm.CommandType = CommandType.StoredProcedure  
            SqlComm.CommandText = "AddAndUpdateImg"  
            pr = New SqlParameter("@ImgID", SqlDbType.Int)  
            pr.Value = CInt(Me.TxtBoxImgID.Text)  
            SqlComm.Parameters.Add(pr)  
            pr = New SqlParameter("@ImgName", SqlDbType.NVarChar, 255)  
            pr.Value = Me.TxtBoxImgName.Text  
            SqlComm.Parameters.Add(pr)  
            pr = New SqlParameter("@ImgDes", SqlDbType.NVarChar, 1000)  
            If Me.TxtBoxImgDes.Text > "" Then  
                pr.Value = Me.TxtBoxImgDes.Text  
            Else  
                pr.Value = ""  
            End If  
            SqlComm.Parameters.Add(pr)  
            pr = New SqlParameter("@ImgExtName", SqlDbType.NVarChar, 10)  
            If Me.TxtBoxImgExtName.Text > "" Then  
                pr.Value = Me.TxtBoxImgExtName.Text  
            Else  
                pr.Value = ""  
            End If  
            SqlComm.Parameters.Add(pr)  
            pr = New SqlParameter("@ImgTypeID", SqlDbType.Int)  
            If Me.TxtBoxImgTypeID.Text > "" Then pr.Value = CInt(Me.TxtBoxImgTypeID.Text)  
            SqlComm.Parameters.Add(pr)  
            pr = New SqlParameter("@UpdateTime", SqlDbType.SmallDateTime)  
            pr.Value = Me.TImgUpdateTime.Value  
            SqlComm.Parameters.Add(pr)  
            pr = New SqlParameter("@ImgBinary", SqlDbType.Image)  
            If ImgPath > "" Then  
                fs = New FileStream(ImgPath, FileMode.Open)  
                Dim bt(fs.Length) As Byte  
                fs.Read(bt, 0, fs.Length)  
                pr.Value = bt  
            Else  
                If Me.ImgBox.Image IsNot Nothing Then  
                    Me.ImgBox.Image.Save(fs, Me.ImgBox.Image.RawFormat)  
                    Dim bt(fs.Length) As Byte  
                    fs.Read(bt, 0, fs.Length)  
                    pr.Value = bt  
                End If  
            End If  
            SqlComm.Parameters.Add(pr)  
            SqlConn.Open()  
            SqlComm.ExecuteNonQuery()  
            Try  
                fs.Close()  
            Catch ex As Exception  
            End Try  
            SqlConn.Close()  
            SqlConn = Nothing  
            Return True  
        Catch ex As SqlException  
            Dim errItem As SqlError  
            Dim errString As String = ""  
            For Each errItem In ex.Errors  
                errString += ex.Message + " "  
            Next  
            MsgBox("SQL错误.详细内容:" & errString)  
            Return False  
        Catch myException As Exception  
            MsgBox("异常描述:" + myException.ToString())  
            Return False  
        End Try  
    End Function  


 

程序界面和数据库下载:http://download.csdn.net/source/566140

新文章:图片存储到SQLServer数据库里的界面代码。

http://blog.csdn.net/linjimu/archive/2009/08/05/4410980.aspx

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server 数据库提取二进制存储图片,您可以使用以下步骤: 1. 使用 SQL Server Management Studio 连接到您的数据库。 2. 打开新查询窗口,输入以下 SQL 语句: SELECT ImageColumnName FROM TableName WHERE ID = 123; 其,ImageColumnName 是存储图片的列名,TableName 是表名,ID 是存储图片的行的 ID。 3. 执行查询语句后,您会在结果窗口看到一列二进制数据,这就是存储数据库图片数据。 4. 将二进制数据保存为图片文件,您可以使用以下两种方法: - 手动保存:将二进制数据复制到一个文本编辑器,然后将其保存为一个二进制文件,例如“image.jpg”。 - 使用编程语言:如果您正在使用编程语言,例如 VBA,您可以使用代码将二进制数据保存为图片文件。以下是一个示例 VBA 代码: Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "SELECT ImageColumnName FROM TableName WHERE ID = 123", CurrentProject.Connection, adOpenStatic, adLockOptimistic If Not rs.EOF Then Dim data() As Byte data = rs.Fields("ImageColumnName").GetChunk(rs.Fields("ImageColumnName").ActualSize) Dim fnum As Integer fnum = FreeFile() Open "C:\image.jpg" For Binary Access Write As #fnum Put #fnum, , data Close #fnum End If 请注意,上述代码的“ImageColumnName”、“TableName”和“ID”需要替换为您的实际列名、表名和行 ID。此外,您还需要将文件路径“C:\image.jpg”更改为您想要保存图片的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值