当前位置: 代码迷 >> Sql Server >> 怎么把文档等文件上传到SQL中呢?多谢
  详细解决方案

怎么把文档等文件上传到SQL中呢?多谢

热度:32   发布时间:2016-04-24 18:29:05.0
如何把文档等文件上传到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系统的目录中,这种保存到表中的方法,不是很方便的
------解决方案--------------------
引用:
您好,使用什么方法不重要,只要能把文件成功上传至服务器相应位置就可以了。另外,如果是保存在数据库里,那sql的体积不是越来越大?


SQL中存储路径 程序调用路径 是最常用的方法。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

必须要用语句么?最近看到一种读取外部文件的方法,你看看,
以下是否符合要求呢

--先添加一个链接服务器,链接到具体的文件,格式大致如下:
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系统的目录中,这种保存到表中的方法,不是很方便的

如果用别的方法,比如用FTP保存到某个盘的某个目录下,这样如果想将某条数据记录对应某几个文件的话方便么?


方便的,这个只需要在你的表中,加一个字段,存储这个文件的路径就可以
------解决方案--------------------
文件要频繁转换成二进制存入数据库然后再转换成程序可读格式展现,这个开销不是小事
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

必须要用语句么?最近看到一种读取外部文件的方法,你看看,
以下是否符合要求呢

--先添加一个链接服务器,链接到具体的文件,格式大致如下:
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数据库文件里的一张表名称
  相关解决方案