내 vb winform 프로그램에 사용자가 파일 (.doc, .docx, .jpg, .pdf)을 첨부 할 수있는 기능을 추가하려고합니다. 다른 텍스트 데이터를 보유합니다. 이진 파일과 파일 이름은 DB에 저장됩니다. 경로가있는 파일 이름은 변수 'fpath'로 전달됩니다. 아래는 내가 지금까지 가지고있는 것입니다 (파일 이름과 바이너리 데이터를 저장한다는 의미입니다). 이제 어떻게 사용자가 저장된 파일을 열 수 있습니까? 그리고 .doc 또는 PDF 등의 경우 기본 연결 프로그램을 어떻게 열 수 있습니까? . 다른 사람이 나를 도와 줄 수 있습니까? 여기 vb winform에서 .mdb의 OLE 개체 저장/열기
는 OLE 개체를 저장하는 코드입니다 : 검색 및 방법의 무리를 시도Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
'data connection
Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" & _
Application.StartupPath & "\data.mdb"
cn.Open()
'file name without path
Dim flName As String = filename.Text
'open file from the disk (file path is the path to the file to be opened)
Using fileStream As FileStream = File.OpenRead(fpath)
'create new MemoryStream object
Dim memStream As New MemoryStream()
memStream.SetLength(fileStream.Length)
'read file to MemoryStream
fileStream.Read(memStream.GetBuffer(), 0, CInt(Fix(fileStream.Length)))
Dim strImage As String = "?"
Dim arr As Byte()
arr = memStream.GetBuffer
Dim cmd As New OleDb.OleDbCommand
cmd.Connection = cn
cmd.CommandText = "INSERT INTO tblstudent(name, photo) VALUES(?, ?)"
cmd.Parameters.Add("@name", OleDbType.Char).Value = flName
cmd.Parameters.Add("@photo", OleDb.OleDbType.Binary).Value = arr
cmd.ExecuteNonQuery()
MsgBox("Data save successfully!")
cn.Close()
End Using
End Sub
'MsgBox'가 너무 일찍 왔기 때문에'cmd.ExecuteNonQuery()'다음에오고 Try/Catch를 사용해야합니다. 나는 파일 이름도 저장해야한다고 생각한다. – OneFineDay
try/catch를 추가하고 msg 상자의 순서를 바꿨습니다. 이 코드는 db에 아무 것도 저장하지 않지만 예외를 던지지는 않습니다. 다른 무엇을 해야할지 확실하지 않습니다. – Cory
코드와 질문 텍스트가 일치하지 않습니다. 텍스트는 "사용자가 단추를 클릭하여 파일을 탐색하면 파일 이름과 경로가 lable1에 표시됩니다"라고 표시되지만 코드는 파일 이름과 경로를 저장하지 않습니다 (파일을 아무것도 읽지 않음). 'System.IO.File.ReadAllBytes (flName)'을 사용하여 생성 한 스트림을 전혀 사용하지 않은 다음 해당 스트림의 초기화되지 않은 존재하지 않는 내용을 DB에 저장하려고 시도합니다. 너 뭐하려고하는거야? 파일 이름과 경로를 저장 하시겠습니까? 파일의 바이너리 내용을 저장 하시겠습니까? 여기에 대한 도움을 청합니다. –