手上有一类文件要在数据库中存取,但不希望客户看到其中的内容。
因此需要将它转为二进制文件存入数据库,然后从数据库下载的时候再转回原有的格式,大家有什么好的方法吗??

解决方案 »

  1.   

    我到是有个加解密的函数,正在用,效果还可以
    不知道有没有BUG,回头我找找看
      

  2.   

    用的话就是 EnCodeTxt("字符串",55)Public Function EnCodeTxt(strSource As String, strPass As Integer) As String        '加解密字符串
        On Error GoTo ErrEnDeCode
        Dim x As Single
        Dim CHARNUM As Long, RANDOMINTEGER As Integer
        Dim SINGLECHAR As String * 1
        Dim strTmp As String
        Dim MA As Integer
        MA = strPass        
        If MA < 0 Then
        MA = MA * (-1)
        End If
        x = Rnd(-MA)
        For i = 1 To Len(strSource) Step 1
        SINGLECHAR = Mid(strSource, i, 1)
        CHARNUM = Asc(SINGLECHAR)
    g:     RANDOMINTEGER = Int(127 * Rnd)
        If RANDOMINTEGER < 30 Or RANDOMINTEGER > 100 Then GoTo g
        CHARNUM = CHARNUM Xor RANDOMINTEGER
        strTmp = strTmp & Chr(CHARNUM)
        Next i
        EnCodeTxt = strTmp
        Exit Function
    ErrEnDeCode:
        EnCodeTxt = ""
        MsgBox Err.Number & "\" & Err.Description
    End Function
      

  3.   

    我认为把文件存储在数据库中不是什么好方法,如果小一点的文件还可以考虑,
    但是如果是几百上G的文件就完全没必要了。不知道你为何考虑把文件放入数据库,
    但如果只是为了数据安全,大可以直接加密文件,如果是考虑SQL的网络下载数据
    ,还不如直接使用IIS的WEB下载或FTP下载,VB里直接有控件可以做这种事。因为
    通过数据库下在文件速度实在不行,已前我的一个同事做过一个自动升级程序,就
    是把文件放入SQL中,我们测试了一下,当5台电脑同时从数据库中读取一个25MB的
    文件时,竟然有两台电脑的像死机一样慢。我也做过一个自动升级程序,但是是基
    于完全的网络技术做的,测试了一下,在20台电脑同时升级50MB文件包的情况下工
    作流畅,最起码可以有进度条看到屏幕不会那么烦恼和心急。
    所以我建议无论从安全角度或是网络传输角度,文件的管理还是不用数据库的好。