كود :
Imports System.Data.SqlClient
Imports System.IO
Public Class Form1
' قم بتغيير كود الاتصال بقاعدة البيانات فى السطر التالى
Dim con As SqlConnection = New SqlConnection("Server=.;Database=test;Integrated Security=True")
Dim cmd As SqlCommand
Dim Da As SqlDataAdapter
Dim dt As New DataTable
' تعريف متغيير من نوع رقم ليتم تسجيل به رقم الصف عند تحديده من الداتا جريد
Dim DgId As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
GetLoadData()
End Sub
Private Sub GetLoadData()
' تفريغ DT
dt.Clear()
' جلب البيانات من قاعدة البيانات
cmd = New SqlCommand("select * from TB_File", con)
Da = New SqlDataAdapter(cmd)
Da.Fill(dt)
' تعبئة الداتا جريد بالبيانات التى تم تعبئتها
dataGridView1.DataSource = dt
' تسمية الاعمدة فى الداتا جريد
dataGridView1.Columns(0).HeaderText = "ID"
dataGridView1.Columns(1).HeaderText = "File Name"
dataGridView1.Columns(2).HeaderText = "File Extension"
' اخفاء العمود الاخير تجنباً من ظهور رسالة اخطاء
' خصوصاً اذا كان الملف المرفق ليس صورة
dataGridView1.Columns(3).Visible = False
End Sub
Private Sub dataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataGridView1.CellClick
' اعطاء المتغيير المعرف من نوع رقم قيمة رقم الصف
DgId = e.RowIndex
End Sub
Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click
' التحقق اذا كان الداتا جريد ممتلئة ام فارغة لتنفيذ كود فتح الملف
If (dataGridView1.RowCount > 0) Then
' تحويل الكود المسجل بقاعدة البيانات الى ملف
Dim ff() As Byte = CType(dt.Rows(DgId)(3), Byte())
Dim FPath = Application.StartupPath & "\" & dt.Rows(DgId)(1).ToString() & dt.Rows(DgId)(2).ToString()
Dim FFS As FileStream = New FileStream(FPath, FileMode.Create, FileAccess.Write)
FFS.Write(ff, 0, ff.Length)
FFS.Close()
' تنفيذ فتح الملف بعد انشائه بالكود السابق
Process.Start(FPath)
Else
' رسالة تنبيه بان الداتا جريد فارغة
MsgBox("Please Add Any Data So You Can Open File Selected.")
End If
End Sub
Private Sub button3_Click(sender As Object, e As EventArgs) Handles button3.Click
' تحويل الملف الى Byte
Dim FFS As FileStream = New FileStream(textBox2.Text, FileMode.Open)
Dim FBR As BinaryReader = New BinaryReader(FFS)
Dim FileCon() As Byte = FBR.ReadBytes(FFS.Length)
FFS.Close()
FBR.Close()
' اضافة البيانات بقاعدة البيانات
cmd = New SqlCommand("Insert into TB_File (FileName,FileExt,Attachment) Values (@FileName,@FileExt,@Attachment)", con)
con.Open()
cmd.Parameters.Add(New SqlParameter("@FileName", SqlDbType.NVarChar)).Value = textBox1.Text
cmd.Parameters.Add(New SqlParameter("@FileExt", SqlDbType.NVarChar)).Value = Path.GetExtension(textBox2.Text)
cmd.Parameters.Add(New SqlParameter("@Attachment", SqlDbType.VarBinary)).Value = FileCon
cmd.ExecuteNonQuery()
con.Close()
MsgBox("OK!")
' تحميل البيانات بالداتا جريد
GetLoadData()
' تفريغ كلاً من اداء النصوص
textBox1.Clear()
textBox2.Clear()
End Sub
Private Sub textBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles textBox1.KeyPress
If Not Char.IsLetter(e.KeyChar) And Not e.KeyChar = Chr(Keys.Delete) And Not e.KeyChar = Chr(Keys.Back) And Not e.KeyChar = Chr(Keys.Space) Then e.Handled = True
End Sub
Private Sub textBox1_TextChanged(sender As Object, e As EventArgs) Handles textBox1.TextChanged
' التحقق باذا البيانات مدخلة لاتمام تفعيل زر الحفظ
If (String.IsNullOrWhiteSpace(textBox2.Text) OrElse String.IsNullOrWhiteSpace(textBox1.Text)) Then
button3.Enabled = False
Else
button3.Enabled = True
End If
End Sub
Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
' اختيار الملف المطلوب استخدامه للحفظ بقاعدة البيانات
Dim OFD As OpenFileDialog = New OpenFileDialog()
Dim dlgRes As DialogResult = OFD.ShowDialog()
If (Not dlgRes = DialogResult.Cancel) Then
' مسار الملف كاملاً
textBox2.Text = OFD.FileName
' التحقق باذا البيانات مدخلة لاتمام تفعيل زر الحفظ
' التحقق باذا البيانات مدخلة لاتمام تفعيل زر الحفظ
If (String.IsNullOrWhiteSpace(textBox2.Text) OrElse String.IsNullOrWhiteSpace(textBox1.Text)) Then
button3.Enabled = False
Else
button3.Enabled = True
End If
End If
End Sub
End Class