200分 求解.在VB中有一贴
http://community.csdn.net/Expert/topic/3168/3168551.xml?temp=.6895868

解决方案 »

  1.   

    ===============================================================
    写入word
    dim rs
    dim stream


    set rs=Server.CreateObject("ADODB.recordset")
    set stream=Server.CreateObject("ADODB.Stream")
    stream.Type=1
    stream.open
    stream.LoadFromFile "D:\shLiuCheng1.doc"
    rs.open "select * from 表名,conn,3,3

    rs.addNew
    rs("image1")=stream.read
    rs.update
    这种方法把Word 文档存入表中================================================================
    读出word
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim mstream As ADODB.Streamcn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;
    Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"
    Set rs = New ADODB.Recordset
    rs.Open "Select * from 表名", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Stream
    mstream.Type = adTypeBinary
    mstream.Open
    mstream.Write rs.Fields("image1").Value
    mstream.SaveToFile "c:\temp.doc", adSaveCreateOverWriters.Close
    cn.Close
      

  2.   

    Dim cn As New ADODB.Connection
        
        cn.ConnectionString = "Provider=SQLOLEDB.1;Initial Catalog=Test;Data Source=.;user id=sa;password="
        cn.Open
        
        cn.Execute "CREATE TABLE [dbo].[vb_test] ([t1] [int] NULL ,[t2] [text] NULL) "    Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset    '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary    '二进制模式
            .Open
            .LoadFromFile "C:\Documents and Settings\Administrator\桌面\vb-program\g.dat"
        End With
        
        '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "vb_test", cn, adOpenKeyset, adLockOptimistic
            .AddNew         '新增一条记录
            .Fields("t1") = 1
            .Fields("t2") = iStm.Read
            .Update
        End With
        
        '完成后关闭对象
        iRe.Close
        iStm.Close
      

  3.   

    我的文件g.dat在插入数据库的时候,就被Sql给截断了,
    不知道为什么?
      

  4.   

    字段用text应该是没有什么问题,问题在于楼主自己的处理方法,是按字符串来处理,不是按二进制来处理的.
      

  5.   

    to:zjcxc(邹建) 
     我刚试过了你的方法,和我上面给的代码的结果是一样的.
      

  6.   

    To:viptiger(六嘎)
    我一开始也想到了Image型,
    但是我用的数据库是MS Sql Server7.0
    不允许Image类型的全文检索.
      

  7.   

    TO:zjcxc(邹建) 
    按字符串来处理,和按二进制来处理的结果一致.是否是MS sql server 7.0 的问题,还是要做什么更改?
      

  8.   

    是我错了,这样处理是不行的,得用image字段.
      

  9.   

    如果你不能用iamge字段的话改用ntext字段来处理,我测试过的
    但要注意一点,要导入的文件必须是双字节,单字节则会丢失一个字节
      

  10.   

    我测试了.gif文件及.xls文件,又字节的保存及还原均没有问题.单字节的出错,出现丢失一个字节的情况.
      

  11.   

    不行,
    结果还是一样的.你有Email吗?
    我把我的文件发给你测试一下吧.
      

  12.   

    我的代码是这样的,VB6.0 + MS Sql Server 7.0 和您的是一样的吗?
        Dim cn As New ADODB.Connection
        
        cn.ConnectionString = "Provider=SQLOLEDB.1;Initial Catalog=Test;Data Source=.;user id=sa;password="
        cn.Open
        
        cn.Execute "CREATE TABLE [dbo].[vb_test10] ([t1] [int] NULL ,[t2] [ntext] NULL) "    Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset    '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary    '二进制模式
            .Open
            .LoadFromFile "C:\Documents and Settings\Administrator\桌面\vb-program\g2.dat"
        End With
        
        '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "vb_test10", cn, adOpenKeyset, adLockOptimistic
            .AddNew         '新增一条记录
            .Fields("t1") = 1
            .Fields("t2") = iStm.Read
            .Update
        End With
        
        '完成后关闭对象
        iRe.Close
        iStm.Close
        
        Dim rs As Recordset
        Set rs = cn.Execute("select * from vb_test10")
        
        Open "C:\Documents and Settings\Administrator\桌面\vb-program\vb_test10.txt" For Output As #1   ' 打开输入文件。
        Print #1, rs("t2").Value
        Close #1
      

  13.   

    留着这个干什么?    Dim rs As Recordset
        Set rs = cn.Execute("select * from vb_test10")
        
        Open "C:\Documents and Settings\Administrator\桌面\vb-program\vb_test10.txt" For Output As #1   ' 打开输入文件。
        Print #1, rs("t2").Value
        Close #1
      

  14.   

    输出到文件,
    用WinHEX查看对比.
    是否一致.
      

  15.   

    睡觉去了,你自己再慢慢调试吧,看清楚我写的,不要又忘记删除你自己写的错误的部分了导出我是在DOS的命令提示符下用下面的命令:
    bcp "select t2 from test.dbo.vb_test" queryout c:\b.dat注意这一点,否则输入的文件是不对的:请输入字段 t2 的前缀长度 [4]:0
      

  16.   

    您在查看的时候是通过什么方法进行的呢?我把Sql中的数据复制到剪切板之后,粘贴到WinHEx中时,
    WinHEX提供了几个选项.我每个都试了一下.
    好像还是不行?