任何人都可以帮我打开文件吗? [英] Can any one help me how open a file?

查看:76
本文介绍了任何人都可以帮我打开文件吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello, I have a project, where I want to save pdf, doc, xls files in an ole object field in an accdb database. Until the part of saving and reading I could do, but then the part is missing to open, can someone help me?







为了保存文件,我写了这段代码:






For saving the files i wrote this code:

Private Builder As New OleDbConnectionStringBuilder With _
   { _
       .DataSource = IO.Path.Combine(Application.StartupPath, "SIGCB.accdb"), _
       .Provider = "Microsoft.ACE.OLEDB.12.0" _
   }

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    Dim cn As New OleDbConnection With {.ConnectionString = Builder.ConnectionString}
    Dim cmd As New OleDbCommand With {.Connection = cn}
    Dim dr As OleDbDataReader = Nothing
    Dim FileStream As System.IO.FileStream
    Dim Reader As System.IO.BinaryReader = Nothing
    Dim Data() As Byte = Nothing
    FileStream = New System.IO.FileStream(
        IO.Path.Combine(Application.StartupPath, Localização_do_Ficheiro_TB.Text),
        System.IO.FileMode.Open, System.IO.FileAccess.Read)
    Reader = New System.IO.BinaryReader(FileStream)
    Data = Reader.ReadBytes(CInt(FileStream.Length))
    cn.Open()
    cmd.CommandText = "INSERT INTO Data_Ficheiros (IDB_NINT, IDB_NMECAN, IDB_NOMEABV, ARQ_DATA, ARQ_DESC, ARQ_FILE) VALUES(@IDB_NINT,@IDB_NMECAN,@IDB_NOMEABV,@ARQ_DATA,@ARQ_DESC,@ARQ_FILE)"
    cmd.Connection = cn
    cmd.Parameters.Add("@IDB_NMECAN", System.Data.OleDb.OleDbType.WChar)
    cmd.Parameters(0).Value = Nº_Interno_TB.Text
    cmd.Parameters.Add("@IDB_NMECAN", System.Data.OleDb.OleDbType.WChar)
    cmd.Parameters(1).Value = Nº_Mecanográfico_TB.Text
    cmd.Parameters.Add("@IDB_NOMEABV", System.Data.OleDb.OleDbType.WChar)
    cmd.Parameters(2).Value = Nome_TB.Text
    cmd.Parameters.Add("@ARQ_DATA", System.Data.OleDb.OleDbType.WChar)
    cmd.Parameters(3).Value = Data_Ficheiro_TB.Text
    cmd.Parameters.Add("@ARQ_DESC", System.Data.OleDb.OleDbType.WChar)
    cmd.Parameters(4).Value = Descrição_Ficheiro_TB.Text
    cmd.Parameters.Add("@ARQ_FILE", System.Data.OleDb.OleDbType.LongVarBinary)
    cmd.Parameters(5).Value = Data
    cmd.ExecuteNonQuery()
    cn.Close()

End Sub





我是什么尝试过:



这是读取文件





What I have tried:

And this is for Read the file

Dim cn As New OleDbConnection With {.ConnectionString = Builder.ConnectionString}
Dim cmd As New OleDbCommand With _
    { _
        .Connection = cn, _
        .CommandText = "SELECT ARQ_FILE FROM Data_Ficheiros Where ARQ_FILE= ARQ_FILE" _
    }
Dim dr As OleDbDataReader = Nothing
Dim FileStream As System.IO.FileStream
Dim Reader As OleDbDataReader
Dim Data() As Byte = Nothing
Dim Writer As System.IO.BinaryWriter = Nothing
Dim bufferSize As Integer = 1000
Dim buffer(bufferSize - 1) As Byte
Dim startIndex As Long = 0
Dim numberOfBytes As Long = 0
cn.Open()
Reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
Reader.Read()
FileStream = New System.IO.FileStream(
    IO.Path.Combine(Application.StartupPath, Localização_do_Ficheiro_TB.Text),
    System.IO.FileMode.Open, System.IO.FileAccess.Write)
Writer = New System.IO.BinaryWriter(FileStream)
Do
    numberOfBytes = Reader.GetBytes(0, startIndex, buffer, 0, bufferSize)
    If numberOfBytes = 0 Then
        Exit Do
    End If
    Writer.Write(buffer, 0, CInt(Fix(numberOfBytes)))
    startIndex += numberOfBytes
Loop While True
Writer.Flush()
If Writer IsNot Nothing Then
    Writer.Close()
End If
If FileStream IsNot Nothing Then
    FileStream.Close()
End If
If Reader IsNot Nothing Then
    Reader.Close()
End If
cn.Close()
MessageBox.Show("Done")





现在我怎么开它?



Now how i open it?

推荐答案

将数据库中的数据保存到具有相应扩展名的文件中,并使用进程类(System.Diagnostics) [ ^ ]。
Save the data from the database to a file with the appropriate extension and launch it with the Process Class (System.Diagnostics)[^].


这篇关于任何人都可以帮我打开文件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆