السلام عليكم و رحمة الله وباركاته ..حياكم الله اخواني ..
عند ملفات pdf استطعت ان احفظه في قاعدة البيانات sql .. المشكلة انني لم استطيع استدعاء الملفات من قاعدة البيانات وعرضه ارجو مساعدتي وجزاكم الله خيرا
حياك الله اخ سعود وجزاك الله خير بس المشكلة ان pdf مش مثل صور لابد اني اجمع pdf في مكان بعدين اعرضو هنا المشكلة انا مبتدئ وجزاك الله خير مرة تانية
.....
لحفظ ملفات مثل
PDF أو حتى
exe يمكن حفظها في قاعدة البيانات في صورة بايناري
()Byte ثم عند قراءتها يتم تحويلها إلى ملف ومن ثم تشغيلها إذا أردنا ذلك
هذا مثال لحفظ ملفات
PDF وعرض أسماءها في
ListBox ومنها يتم الاختيار وتشغبله بواسطة البرنامج الإفتراضي له والذي غالباً هو
AcrobatReader
أولا إعمل جدول في قاعدة البيانات
SQLServer سواء في
tempdb أو أي اسم آخر وذلك كالتالي
table1 : إسم الجدول
id : ترقيم تلقائي من نوع
INT
pdfName : إسم الملف من نوع
NVARCHAR بطول حوالي
200 أو أكثر
pdfData : بيانات الملف الرقمية من نوع
IMAGE حيث أن
Image هو عبارة عن بيانات رقمية ولذلك سنستغله في هذه المهمة
أضف في الفورم
ListBox1 لعرض أسماء الملفات المخزنة في قاعدة البيانات
Button1 لإضافة ملف
PDF إلى قاعدة البيانات
Button2 لعرض الملف المحدد في
ListBox1 بواسطة البرنامج الإفتراضي له
كود :
Public Class Form1
Dim con As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS; Initial Catalog=tempdb; Integrated Security=True")
' إعمل التالي في قاعدة البيانات
' Table: الجدول
' table1
' Columns: الأعمدة
' id INT IDENTITY
' pdfName NVARCHAR(200) ' إسم الملف
' pdfData IMAGE ' لأن الصورة بايناري فسنستغلها لبيانات الملف
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBoxFill() ' تعبئة
End Sub
Private Sub ListBoxFill()
Using da As New SqlClient.SqlDataAdapter(" SELECT id, pdfName FROM [table1] ", con)
Dim dt As New DataTable
da.Fill(dt)
Me.ListBox1.DataSource = dt
Me.ListBox1.ValueMember = "id"
Me.ListBox1.DisplayMember = "pdfName"
End Using
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Using op As New OpenFileDialog
op.Filter = "PDF files (*.pdf)|*.pdf"
If op.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim data As Byte() = IO.File.ReadAllBytes(op.FileName)
Dim sql As String = "INSERT INTO [Table1] (pdfName, pdfData) VALUES(@pdfName, @pdfData)"
Dim comm As New SqlClient.SqlCommand(sql, con)
comm.Parameters.AddWithValue("@pdfName", IO.Path.GetFileName(op.FileName))
comm.Parameters.AddWithValue("@pdfData", data)
con.Open()
comm.ExecuteNonQuery()
con.Close()
ListBoxFill() ' إعادة تعبئة
End If
End Using
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' إذا لم يحدد ملف يخرج من الأمر
If Me.ListBox1.SelectedValue Is Nothing Then Exit Sub
Dim sql As String = "SELECT [pdfName],[pdfData] FROM [Table1] WHERE [id] = " & Me.ListBox1.SelectedValue
Using da As New SqlClient.SqlDataAdapter(sql, con)
Using dt As New DataTable
If da.Fill(dt) > 0 Then
Dim row As DataRow = dt.Rows(0)
Dim tmpPath As String = IO.Path.GetTempPath
Dim fileName As String = tmpPath & "\" & row("pdfName")
IO.File.WriteAllBytes(fileName, row("pdfData"))
Process.Start(fileName) ' فتح الملف بواسطة البرنامج الإفتراضي له
End If
End Using
End Using
End Sub
End Class
.....
حياك الله وابقاك وجزاك الله خير الجزاء والله معارف كيف اشكرك بس اقولك نسأل الله ان ييسرلك امرك انت واخانا سعود
(19-07-14, 11:17 AM)vbnet كتب : [ -> ].....
لحفظ ملفات مثل PDF أو حتى exe يمكن حفظها في قاعدة البيانات في صورة بايناري ()Byte ثم عند قراءتها يتم تحويلها إلى ملف ومن ثم تشغيلها إذا أردنا ذلك
هذا مثال لحفظ ملفات PDF وعرض أسماءها في ListBox ومنها يتم الاختيار وتشغبله بواسطة البرنامج الإفتراضي له والذي غالباً هو AcrobatReader
أولا إعمل جدول في قاعدة البيانات SQLServer سواء في tempdb أو أي اسم آخر وذلك كالتالي
table1 : إسم الجدول
id : ترقيم تلقائي من نوع INT
pdfName : إسم الملف من نوع NVARCHAR بطول حوالي 200 أو أكثر
pdfData : بيانات الملف الرقمية من نوع IMAGE حيث أن Image هو عبارة عن بيانات رقمية ولذلك سنستغله في هذه المهمة
أضف في الفورم
ListBox1 لعرض أسماء الملفات المخزنة في قاعدة البيانات
Button1 لإضافة ملف PDF إلى قاعدة البيانات
Button2 لعرض الملف المحدد في ListBox1 بواسطة البرنامج الإفتراضي له
كود :
Public Class Form1
Dim con As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS; Initial Catalog=tempdb; Integrated Security=True")
' إعمل التالي في قاعدة البيانات
' Table: الجدول
' table1
' Columns: الأعمدة
' id INT IDENTITY
' pdfName NVARCHAR(200) ' إسم الملف
' pdfData IMAGE ' لأن الصورة بايناري فسنستغلها لبيانات الملف
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBoxFill() ' تعبئة
End Sub
Private Sub ListBoxFill()
Using da As New SqlClient.SqlDataAdapter(" SELECT id, pdfName FROM [table1] ", con)
Dim dt As New DataTable
da.Fill(dt)
Me.ListBox1.DataSource = dt
Me.ListBox1.ValueMember = "id"
Me.ListBox1.DisplayMember = "pdfName"
End Using
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Using op As New OpenFileDialog
op.Filter = "PDF files (*.pdf)|*.pdf"
If op.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim data As Byte() = IO.File.ReadAllBytes(op.FileName)
Dim sql As String = "INSERT INTO [Table1] (pdfName, pdfData) VALUES(@pdfName, @pdfData)"
Dim comm As New SqlClient.SqlCommand(sql, con)
comm.Parameters.AddWithValue("@pdfName", IO.Path.GetFileName(op.FileName))
comm.Parameters.AddWithValue("@pdfData", data)
con.Open()
comm.ExecuteNonQuery()
con.Close()
ListBoxFill() ' إعادة تعبئة
End If
End Using
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' إذا لم يحدد ملف يخرج من الأمر
If Me.ListBox1.SelectedValue Is Nothing Then Exit Sub
Dim sql As String = "SELECT [pdfName],[pdfData] FROM [Table1] WHERE [id] = " & Me.ListBox1.SelectedValue
Using da As New SqlClient.SqlDataAdapter(sql, con)
Using dt As New DataTable
If da.Fill(dt) > 0 Then
Dim row As DataRow = dt.Rows(0)
Dim tmpPath As String = IO.Path.GetTempPath
Dim fileName As String = tmpPath & "\" & row("pdfName")
IO.File.WriteAllBytes(fileName, row("pdfData"))
Process.Start(fileName) ' فتح الملف بواسطة البرنامج الإفتراضي له
End If
End Using
End Using
End Sub
End Class
.....
ارجوك اخي العزيز هب يمكنك تنزيل فيديو عن طريقة ذي