13 | Insert student information to the Database. - VB.NET & SQL Server
شرح الكود:
هذا الكود ينتمي إلى حدث النقر على زر الحفظ (btn_save
). يقوم بجمع معلومات الطالب من الحقول المدخلة ثم يحفظها في قاعدة
البيانات. إليك الشرح المفصل لكل جزء من الكود:
١. التحقق من رغبة المستخدم في الحفظ:
If MsgBox("هل ترغب بحفظ معلومات الطالب",
vbMsgBoxRight + MsgBoxStyle.Question + vbYesNo, Title:="جاري الحفظ ...") = vbYes Then
If MsgBox("هل ترغب بحفظ معلومات الطالب",
vbMsgBoxRight + MsgBoxStyle.Question + vbYesNo, Title:="جاري الحفظ ...") = vbYes Then
- يظهر رسالة تأكيد للمستخدم تسأله إذا كان
يرغب في حفظ معلومات الطالب. إذا اختار "نعم"، يستمر الكود.
٢. إنشاء اتصال بقاعدة البيانات:
Dim con As New SqlConnection(conString)
Dim dt As New DataTable
dt.Clear()
Dim con As New SqlConnection(conString)
Dim dt As New DataTable
dt.Clear()
- يتم إنشاء كائن الاتصال
con
باستخدام سلسلة الاتصالconString
. يتم أيضًا إنشاءDataTable
للتأكد من أنها فارغة.
٣. إعداد الأمر SQL لإدخال البيانات:
Using cmd As New SqlCommand("INSERT INTO tbl_st_info (st_name, stage_id, group_id,
registration_date, academic_year, st_gender, st_ph_no, pa_ph_no, discount,
discount_type, study_fee, added_date, added_by,account_status, notes)
VALUES
(@st_name, @stage_id, @group_id, @registration_date,
@academic_year, @st_gender, @st_ph_no, @pa_ph_no, @discount, @discount_type,
@study_fee, @added_date, @added_by,@account_status, @notes)", con)
Using cmd As New SqlCommand("INSERT INTO tbl_st_info (st_name, stage_id, group_id,
registration_date, academic_year, st_gender, st_ph_no, pa_ph_no, discount,
discount_type, study_fee, added_date, added_by,account_status, notes)
VALUES
(@st_name, @stage_id, @group_id, @registration_date, @academic_year, @st_gender, @st_ph_no, @pa_ph_no, @discount, @discount_type, @study_fee, @added_date, @added_by,@account_status, @notes)", con)
- يتم إعداد أمر
SQL لإدخال بيانات الطالب في جدول
tbl_st_info
.
٤. إضافة ال Parameters:
cmd.Parameters.AddWithValue("@st_name", txt_name.Text)
cmd.Parameters.AddWithValue("@stage_id", cbox_stage_id.Text)
cmd.Parameters.AddWithValue("@group_id", cbox_group_id.Text)
cmd.Parameters.AddWithValue("@registration_date", dtp_reg.Value)
cmd.Parameters.AddWithValue("@academic_year",
cbox_AcademicYear.Text)
cmd.Parameters.AddWithValue("@st_gender", cbox_gender.Text)
cmd.Parameters.AddWithValue("@st_ph_no", txt_ph_st.Text)
cmd.Parameters.AddWithValue("@pa_ph_no", txt_ph_parent.Text)
cmd.Parameters.AddWithValue("@discount", txt_discount.Text)
cmd.Parameters.AddWithValue("@discount_type", txt_dis_type.Text)
cmd.Parameters.AddWithValue("@study_fee", txt_fee.Text)
cmd.Parameters.AddWithValue("@added_date", Date.Now.ToString("yyyy/MM/dd
hh:mm:ss"))
cmd.Parameters.AddWithValue("@added_by", UserLogin)
cmd.Parameters.AddWithValue("@account_status", "مفعل")
cmd.Parameters.AddWithValue("@notes",
txt_notes.Text)
cmd.CommandType = CommandType.Text
cmd.CommandTimeout = 420
cmd.Parameters.AddWithValue("@st_name", txt_name.Text)
cmd.Parameters.AddWithValue("@stage_id", cbox_stage_id.Text)
cmd.Parameters.AddWithValue("@group_id", cbox_group_id.Text)
cmd.Parameters.AddWithValue("@registration_date", dtp_reg.Value)
cmd.Parameters.AddWithValue("@academic_year",
cbox_AcademicYear.Text)
cmd.Parameters.AddWithValue("@st_gender", cbox_gender.Text)
cmd.Parameters.AddWithValue("@st_ph_no", txt_ph_st.Text)
cmd.Parameters.AddWithValue("@pa_ph_no", txt_ph_parent.Text)
cmd.Parameters.AddWithValue("@discount", txt_discount.Text)
cmd.Parameters.AddWithValue("@discount_type", txt_dis_type.Text)
cmd.Parameters.AddWithValue("@study_fee", txt_fee.Text)
cmd.Parameters.AddWithValue("@added_date", Date.Now.ToString("yyyy/MM/dd
hh:mm:ss"))
cmd.Parameters.AddWithValue("@added_by", UserLogin)
cmd.Parameters.AddWithValue("@account_status", "مفعل")
cmd.Parameters.AddWithValue("@notes",
txt_notes.Text)
cmd.CommandType = CommandType.Text
cmd.CommandTimeout = 420
تفصيل أكثر حول إضافة المعلمات باستخدام cmd.Parameters.AddWithValue
هذه الأسطر من الكود تقوم بتحديد المعلمات التي سيتم استخدامها في أمر SQL لإدخال بيانات الطالب إلى قاعدة البيانات. كل معلمة تمثل حقلًا معينًا في قاعدة البيانات. إليك تفصيل لكل سطر:
١. cmd.Parameters.AddWithValue("@st_name", txt_name.Text)
- @st_name: معلمة تمثل اسم الطالب.
- txt_name.Text: القيمة التي تم إدخالها في حقل اسم الطالب.
٢. cmd.Parameters.AddWithValue("@stage_id", cbox_stage_id.Text)
- @stage_id: معلمة تمثل هوية الصف (المرحلة).
- cbox_stage_id.Text: القيمة المحددة في ComboBox الخاصة بالمرحلة.
٣. cmd.Parameters.AddWithValue("@group_id", cbox_group_id.Text)
- @group_id: معلمة تمثل هوية المجموعة.
- cbox_group_id.Text: القيمة المحددة في ComboBox الخاصة بالمجموعة.
٤. cmd.Parameters.AddWithValue("@registration_date", dtp_reg.Value)
- @registration_date: معلمة تمثل تاريخ التسجيل.
- dtp_reg.Value: القيمة المحددة في DateTimePicker الخاصة بتاريخ التسجيل.
٥. cmd.Parameters.AddWithValue("@academic_year", cbox_AcademicYear.Text)
- @academic_year: معلمة تمثل السنة الدراسية.
- cbox_AcademicYear.Text: القيمة المحددة في ComboBox الخاصة بالسنة الدراسية.
٦. cmd.Parameters.AddWithValue("@st_gender", cbox_gender.Text)
- @st_gender: معلمة تمثل جنس الطالب.
- cbox_gender.Text: القيمة المحددة في ComboBox الخاصة بالجنس.
٧. cmd.Parameters.AddWithValue("@st_ph_no", txt_ph_st.Text)
- @st_ph_no: معلمة تمثل رقم هاتف الطالب.
- txt_ph_st.Text: القيمة المدخلة في حقل رقم الهاتف.
٨. cmd.Parameters.AddWithValue("@pa_ph_no", txt_ph_parent.Text)
- @pa_ph_no: معلمة تمثل رقم هاتف ولي الأمر.
- txt_ph_parent.Text: القيمة المدخلة في حقل رقم هاتف ولي الأمر.
٩. cmd.Parameters.AddWithValue("@discount", txt_discount.Text)
- @discount: معلمة تمثل نسبة الخصم.
- txt_discount.Text: القيمة المدخلة في حقل الخصم.
١٠. cmd.Parameters.AddWithValue("@discount_type", txt_dis_type.Text)
- @discount_type: معلمة تمثل نوع الخصم.
- txt_dis_type.Text: القيمة المدخلة في حقل نوع الخصم.
١١. cmd.Parameters.AddWithValue("@study_fee", txt_fee.Text)
- @study_fee: معلمة تمثل مبلغ الدراسة.
- txt_fee.Text: القيمة المدخلة في حقل مبلغ الدراسة.
١٢. cmd.Parameters.AddWithValue("@added_date", Date.Now.ToString("yyyy/MM/dd hh:mm:ss"))
- @added_date: معلمة تمثل تاريخ ووقت إضافة البيانات.
- Date.Now.ToString("yyyy/MM/dd hh:mm"): تحصل على التاريخ والوقت الحالي بصيغة محددة.
١٣. cmd.Parameters.AddWithValue("@added_by", UserLogin)
- @added_by: معلمة تمثل اسم المستخدم الذي أضاف البيانات.
- UserLogin: متغير يحتوي على اسم المستخدم الحالي.
١٤. cmd.Parameters.AddWithValue("@account_status", "مفعل")
- @account_status: معلمة تمثل حالة حساب الطالب.
- "مفعل": القيمة الثابتة التي تعني أن الحساب مفعل.
١٥. cmd.Parameters.AddWithValue("@notes", txt_notes.Text)
- @notes: معلمة تمثل الملاحظات.
- txt_notes.Text: القيمة المدخلة في حقل الملاحظات.
خلاصة:
كل سطر من هذه الأسطر يربط قيمة مدخلة من واجهة المستخدم مع معلمة في أمر SQL، مما يسهل إدخال البيانات بطريقة آمنة ومنظمة. استخدام المعلمات يساعد أيضًا في الحماية من هجمات SQL Injection حيث أن القيم تُعالج بشكل آمن
٥. فتح
الاتصال وتنفيذ الأمر:
con.Open()
cmd.ExecuteNonQuery()
con.Close()
con.Open()
cmd.ExecuteNonQuery()
con.Close()
- يتم فتح الاتصال بقاعدة البيانات، ثم يتم
تنفيذ الأمر باستخدام
ExecuteNonQuery
لحفظ البيانات، وبعد ذلك يتم إغلاق الاتصال.
٦. عرض رسالة
تأكيد:
MsgBox("تم حفظ بيانات الطالب بنجاح",
vbMsgBoxRight + MsgBoxStyle.Information, "جاري الحفظ...")
MsgBox("تم حفظ بيانات الطالب بنجاح", vbMsgBoxRight + MsgBoxStyle.Information, "جاري الحفظ...")
خلاصة:
هذا الكود يعالج إدخال بيانات الطالب والتحقق من رغبة المستخدم في
حفظها، ثم يقوم بإدخالها إلى قاعدة البيانات. كما يقوم بتحديث واجهة المستخدم إذا
لزم الأمر.
الأدوات المستخدمة في النموذج
١. TextBox (txt_name): - يستخدم لإدخال اسم الطالب.
٢. TextBox (txt_fee): - يستخدم لإدخال مبلغ الدراسة.
٣. TextBox (txt_ph_st): - يستخدم لإدخال رقم هاتف الطالب.
٤. TextBox (txt_ph_parent): - يستخدم لإدخال رقم هاتف ولي أمر الطالب.
٥. ComboBox (cbox_stage): - يستخدم لتحديد صف الطالب (المرحلة).
٦. ComboBox (cbox_AcademicYear): - يستخدم لتحديد السنة الدراسية.
٧. ComboBox (cbox_gender): - يستخدم لتحديد جنس الطالب.
٨. ComboBox (cbox_group_id): - يستخدم لتحديد هوية المجموعة.
٩. DateTimePicker (dtp_reg): - يستخدم لتحديد تاريخ التسجيل.
١٠. TextBox (txt_discount): - يستخدم لإدخال نسبة الخصم.
١١. TextBox (txt_dis_type): - يستخدم لإدخال نوع الخصم.
١٢. TextBox (txt_notes): - يستخدم لإدخال ملاحظات إضافية حول الطالب.
١٣. Button (btn_save): - يستخدم لحفظ معلومات الطالب بعد التحقق من المدخلات.
الكود كاملا داخل زر - btn_save
Private Sub btn_save_Click(sender As Object, e As EventArgs) Handles btn_save.Click
If txt_name.Text = "" Then
MsgBox("الرجاء كتابة اسم الطالب قبل الحفظ", vbMsgBoxRight + MsgBoxStyle.Exclamation, "اسم الطالب مطلوب")
txt_name.Select()
Return
End If
If txt_fee.Text = "" Then
MsgBox("الرجاء ادخال مبلغ الدراسة", vbMsgBoxRight + MsgBoxStyle.Exclamation, "مبلغ الدراسة مطلوب")
txt_fee.Select()
Return
End If
If txt_ph_parent.Text = "" Then
MsgBox("الرجاء كتابة رقم هاتف ولي امر الطالب قبل الحفظ", vbMsgBoxRight + MsgBoxStyle.Exclamation, "رقم هاتف ولي امر الطالب ...")
txt_ph_parent.Select()
Return
End If
If cbox_stage.Text = "" Then
MsgBox("الرجاء تحديد صف الطالب قبل الحفظ", vbMsgBoxRight + MsgBoxStyle.Exclamation, "صف الطالب مطلوب ...")
cbox_stage.Select()
Return
End If
If cbox_AcademicYear.Text = "" Then
MsgBox("الرجاء تحديد السنة الدراسية قبل الحفظ", vbMsgBoxRight + MsgBoxStyle.Exclamation, "السنة الدراسية مطلوبة ...")
cbox_AcademicYear.Select()
Return
End If
If MsgBox("هل ترغب بحفظ معلومات الطالب", vbMsgBoxRight + MsgBoxStyle.Question + vbYesNo, Title:="جاري الحفظ ...") = vbYes Then
Dim con As New SqlConnection(conString)
Dim dt As New DataTable
dt.Clear()
Using cmd As New SqlCommand("INSERT INTO tbl_st_info (st_name, stage_id, group_id, registration_date, academic_year, st_gender, st_ph_no, pa_ph_no, discount, discount_type, study_fee, added_date, added_by,account_status, notes)
VALUES (@st_name, @stage_id, @group_id, @registration_date, @academic_year, @st_gender, @st_ph_no, @pa_ph_no, @discount, @discount_type, @study_fee, @added_date, @added_by,@account_status, @notes)", con)
cmd.Parameters.AddWithValue("@st_name", txt_name.Text)
cmd.Parameters.AddWithValue("@stage_id", cbox_stage_id.Text)
cmd.Parameters.AddWithValue("@group_id", cbox_group_id.Text)
cmd.Parameters.AddWithValue("@registration_date", dtp_reg.Value)
cmd.Parameters.AddWithValue("@academic_year", cbox_AcademicYear.Text)
cmd.Parameters.AddWithValue("@st_gender", cbox_gender.Text)
cmd.Parameters.AddWithValue("@st_ph_no", txt_ph_st.Text)
cmd.Parameters.AddWithValue("@pa_ph_no", txt_ph_parent.Text)
cmd.Parameters.AddWithValue("@discount", txt_discount.Text)
cmd.Parameters.AddWithValue("@discount_type", txt_dis_type.Text)
cmd.Parameters.AddWithValue("@study_fee", txt_fee.Text)
cmd.Parameters.AddWithValue("@added_date", Date.Now.ToString("yyyy/MM/dd hh:mm:ss"))
cmd.Parameters.AddWithValue("@added_by", UserLogin)
cmd.Parameters.AddWithValue("@account_status", "مفعل")
cmd.Parameters.AddWithValue("@notes", txt_notes.Text)
cmd.CommandType = CommandType.Text
cmd.CommandTimeout = 420
con.Open()
cmd.ExecuteNonQuery()
con.Close()
MsgBox("تم حفظ بيانات الطالب بنجاح", vbMsgBoxRight + MsgBoxStyle.Information, "جاري الحفظ...")
End Using
End If
End Sub
Private Sub btn_save_Click(sender As Object, e As EventArgs) Handles btn_save.Click
If txt_name.Text = "" Then
MsgBox("الرجاء كتابة اسم الطالب قبل الحفظ", vbMsgBoxRight + MsgBoxStyle.Exclamation, "اسم الطالب مطلوب")
txt_name.Select()
Return
End If
If txt_fee.Text = "" Then
MsgBox("الرجاء ادخال مبلغ الدراسة", vbMsgBoxRight + MsgBoxStyle.Exclamation, "مبلغ الدراسة مطلوب")
txt_fee.Select()
Return
End If
If txt_ph_parent.Text = "" Then
MsgBox("الرجاء كتابة رقم هاتف ولي امر الطالب قبل الحفظ", vbMsgBoxRight + MsgBoxStyle.Exclamation, "رقم هاتف ولي امر الطالب ...")
txt_ph_parent.Select()
Return
End If
If cbox_stage.Text = "" Then
MsgBox("الرجاء تحديد صف الطالب قبل الحفظ", vbMsgBoxRight + MsgBoxStyle.Exclamation, "صف الطالب مطلوب ...")
cbox_stage.Select()
Return
End If
If cbox_AcademicYear.Text = "" Then
MsgBox("الرجاء تحديد السنة الدراسية قبل الحفظ", vbMsgBoxRight + MsgBoxStyle.Exclamation, "السنة الدراسية مطلوبة ...")
cbox_AcademicYear.Select()
Return
End If
If MsgBox("هل ترغب بحفظ معلومات الطالب", vbMsgBoxRight + MsgBoxStyle.Question + vbYesNo, Title:="جاري الحفظ ...") = vbYes Then
Dim con As New SqlConnection(conString)
Dim dt As New DataTable
dt.Clear()
Using cmd As New SqlCommand("INSERT INTO tbl_st_info (st_name, stage_id, group_id, registration_date, academic_year, st_gender, st_ph_no, pa_ph_no, discount, discount_type, study_fee, added_date, added_by,account_status, notes)
VALUES (@st_name, @stage_id, @group_id, @registration_date, @academic_year, @st_gender, @st_ph_no, @pa_ph_no, @discount, @discount_type, @study_fee, @added_date, @added_by,@account_status, @notes)", con)
cmd.Parameters.AddWithValue("@st_name", txt_name.Text)
cmd.Parameters.AddWithValue("@stage_id", cbox_stage_id.Text)
cmd.Parameters.AddWithValue("@group_id", cbox_group_id.Text)
cmd.Parameters.AddWithValue("@registration_date", dtp_reg.Value)
cmd.Parameters.AddWithValue("@academic_year", cbox_AcademicYear.Text)
cmd.Parameters.AddWithValue("@st_gender", cbox_gender.Text)
cmd.Parameters.AddWithValue("@st_ph_no", txt_ph_st.Text)
cmd.Parameters.AddWithValue("@pa_ph_no", txt_ph_parent.Text)
cmd.Parameters.AddWithValue("@discount", txt_discount.Text)
cmd.Parameters.AddWithValue("@discount_type", txt_dis_type.Text)
cmd.Parameters.AddWithValue("@study_fee", txt_fee.Text)
cmd.Parameters.AddWithValue("@added_date", Date.Now.ToString("yyyy/MM/dd hh:mm:ss"))
cmd.Parameters.AddWithValue("@added_by", UserLogin)
cmd.Parameters.AddWithValue("@account_status", "مفعل")
cmd.Parameters.AddWithValue("@notes", txt_notes.Text)
cmd.CommandType = CommandType.Text
cmd.CommandTimeout = 420
con.Open()
cmd.ExecuteNonQuery()
con.Close()
MsgBox("تم حفظ بيانات الطالب بنجاح", vbMsgBoxRight + MsgBoxStyle.Information, "جاري الحفظ...")
End Using
End If
End Sub
إذا كان لديك أي أسئلة أخرى أو تحتاج إلى مزيد من التوضيح، فلا تتردد في طرحها!
تعليقات
إرسال تعليق