求一个sqlserver数据库存储过程

时间:2022-05-03 14:06:06
我要向数据库(2000,2005,2008)表中存储二进制文件,这个表如下
GO
CREATE TABLE [dbo].[附件表](
[ID] [nvarchar](50) NULL,
[文件名称] [nvarchar](50) NULL,
[文件扩展名] [nvarchar](15) NULL,
[内容] [image] NULL,
[上传日期] [smalldatetime] NULL,
[上传人] [nvarchar](50) NULL,
[说明] [nvarchar](100) NULL,
[工地名称] [nvarchar](50) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

我采用流方式,太慢,等的要崩溃,没有写过存储过程,求保存该记录的存储过程,提高效率。
非常感谢!

下面是我采用的方式,太慢,一个1M的文件保存要花去1分多钟
Public Function SavePictureToDB(MyFile As String, MyMSF As MSFlexGrid, Myrow As Long) As Boolean
  '将图片存入数据库

    Dim rs As New ADODB.Recordset
    Dim i As Integer
    SavePictureToDB = False
    On Error GoTo EH
          Set stm = New ADODB.Stream
          rs.Open "select ID,文件名称,文件扩展名,内容,上传日期,上传人,工地名称 from  附件表 ", ServerCn, adOpenKeyset, adLockOptimistic
          
          With stm
                .type = adTypeBinary
                .Open
                .LoadFromFile MyFile
          End With
          '序号|^编号|^文件名称|^后缀名|^上传日期|^上传人"
          With rs
             .AddNew
             .Fields("ID") = Trim(MyMSF.TextMatrix(Myrow, 1))
             .Fields("文件名称") = Trim(MyMSF.TextMatrix(Myrow, 2))
             .Fields("文件扩展名") = Trim(MyMSF.TextMatrix(Myrow, 3))
             .Fields("内容") = stm.Read
             .Fields("上传日期") = Format(MyMSF.TextMatrix(Myrow, 4), "yyyy-mm-dd")
             .Fields("上传人") = Trim(MyMSF.TextMatrix(Myrow, 5))
             .Fields("工地名称") = Trim(MyMSF.TextMatrix(Myrow, 6))
              DoEvents
             .Update
            '
          End With
          DoEvents
          rs.Close
          Set rs = Nothing
          Set stm = Nothing
          SavePictureToDB = True
  Exit Function
EH:     MsgBox err.Description, vbInformation, "Error"
  End Function

6 个解决方案

#1


请各位伸出援手,非常感谢!在线等

#2


参考SQL Server联机帮助中“bcp实用工具”相关内容。

#3


现在学来不及。能否帮写一个,谢谢!

#4


 rs.Open "select ID,文件名称,文件扩展名,内容,上传日期,上传人,工地名称 from  附件表  where id=0"  试试看

#5


引用 3 楼 zimeisoft 的回复:
现在学来不及。能否帮写一个,谢谢!

磨刀不误砍柴工。

#6


既然只是插入,不要查询之前所有的行 四楼方法可行 或者改成应该也一样
rs.Open "select top 0 ID,文件名称,文件扩展名,内容,上传日期,上传人,工地名称 from  附件表"

#1


请各位伸出援手,非常感谢!在线等

#2


参考SQL Server联机帮助中“bcp实用工具”相关内容。

#3


现在学来不及。能否帮写一个,谢谢!

#4


 rs.Open "select ID,文件名称,文件扩展名,内容,上传日期,上传人,工地名称 from  附件表  where id=0"  试试看

#5


引用 3 楼 zimeisoft 的回复:
现在学来不及。能否帮写一个,谢谢!

磨刀不误砍柴工。

#6


既然只是插入,不要查询之前所有的行 四楼方法可行 或者改成应该也一样
rs.Open "select top 0 ID,文件名称,文件扩展名,内容,上传日期,上传人,工地名称 from  附件表"