日期:2014-05-16  浏览次数:20471 次

如何把文档等文件上传到SQL中呢?谢谢!
我按网上的各种例子试了好多种方式,都不行.
SQL中建了个表:
CREATE TABLE OfficeFile
(
office image
)

VB中:
Private Sub Command1_Click()
    Dim iStm As ADODB.Stream
    Dim iRe As ADODB.Recordset
    Dim iConcStr As String

    '数据库连接字符串
    iConcStr = "Provider=MSDASQL.1;Password=;Persist Security Info=True;User ID=sa;Data Source=OTIME;Initial Catalog=OTIME"

    '读取文件到内容
    Set iStm = New ADODB.Stream
    With iStm
        .Type = adTypeBinary             '二进制模式
        .Open
        .LoadFromFile "D:\test.doc"
    End With

    '          打开保存文件的表
    Set iRe = New ADODB.Recordset
    With iRe
        .Open " SELECT * FROM OfficeFile ", iConcStr, 1,3
        .AddNew                   '新增一条记录
        .Fields("office") = iStm.Read
'        .Update
    End With

    '          完成后关闭对象
'    iRe.Close
    iStm.Close
End Sub
总是在OPEN的地方出错:不能更新查询,因为它不含可用作键的搜索列.网上有个转载很广的例子<很多单位尤其是制造业、设计院,计算机应用开展的较早。>,我试了也不行,不懂要怎么用
------解决方案--------------------
你的意思是要把文件存储到sql server的表中吗?

这个可以考虑用ntext字段,在2005中可以用nvarchar(max),非常方面,
这个image一般可以存储图片等二进制的数据
------解决方案--------------------
必须要用语句么?最近看到一种读取外部文件的方法,你看看,
以下是否符合要求呢

--先添加一个链接服务器,链接到具体的文件,格式大致如下:
sp_addlinkedserver
'exam',   --链接服务器名
'Microsoft.Jet.OLEDB.4.0',  --提供者名称(可以是excel表,acsess/jet等数据库文件)
'',    
'd:\exam.mdb'   --文件所处的物理路径,比如此处写的是access数据文件

--然后通过语句访问该链接服务器连接的文件中的数据
select * from openrowset('Microsoft.Jet.OLEDB.4.0','d:\exam.mdb';'admin';'',employee)--此处employee是exam.mdb数据库文件里的一张表名称

------解决方案--------------------
上传东西一般是用前端语言调用类似FTP等功能,直接写sql不合理,如果数据也存在sql server里面,转换开销和维护开销都很大
------解决方案--------------------
引用:
必须要用语句么?最近看到一种读取外部文件的方法,你看看,
以下是否符合要求呢

--先添加一个链接服务器,链接到具体的文件,格式大致如下:
sp_addlinkedserver
'exam',   --链接服务器名
'Microsoft.Jet.OLEDB.4.0',  --提供者名称(可以是excel表,acsess/jet等数据库文件)
'',    
'd:\exam.mdb'   --文件所处的物理路径,比如此处写的是access数据文件

--然后通过语句访问该链接服务器连接的文件中的数据
select * from openrowset('Microsoft.Jet.OLEDB.4.0','d:\exam.mdb';'admin';'',employee)--此处employee是exam.mdb数据库文件里的一张表名称


其实最好是,保存到windows系统的目录中,这种保存到表中的方法,不是很方便的
--