[ad_1]
مرحبًا،
أحاول الاتصال بقاعدة بيانات MYSQLWorkbench من VB.NET (Visual Studio) باستخدام هذا الرمز:
Imports System.Data Imports MySql.Data.MySqlClient Imports MySql.Data Public Class Form1 Dim oCon As MySql.Data.MySqlClient.MySqlConnection Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim sProveedor As String sProveedor = "server = localhost; database = vikingos_barberia; user id = root; password = **********; port = 3306" oCon = New MySqlClient.MySqlConnection(sProveedor) oCon.Open() MsgBox("Conexion Exitosa!!") End Sub End Class
ما حاولت:
لقد قمت بالتحقق من المعلمة عدة مرات دون أي تغيير.
الحل 2
للإضافة إلى ما يقوله ديف، فإن الأمر أسوأ من ذلك – يمكنك فتح اتصال بقاعدة البيانات والذي لا يمكن استخدامه أبدًا لأنه يتم تخزينه فقط في متغير محلي، والذي يخرج عن النطاق في نهاية معالج الأحداث Form.Load.
نظرًا لأنه لا يمكن الوصول إليه على الإطلاق خارج الطريقة (في الواقع لم تعد جميع المتغيرات المحلية موجودة عندما تنتهي الطريقة)، فإن الاتصال الذي تقوم بإنشائه عديم الفائدة تمامًا، ويستهلك فقط الموارد النادرة على الخادم.
يجب عليك دائما لنا أ Using
حظر حول إنشاء أي كائنات قاعدة بيانات (الاتصال، والأوامر، والقارئ، والمحول) لإغلاقها تلقائيًا والتخلص منها عند انتهاء الحظر:
Using con As New SqlConnection(strConnect) con.Open() Using cmd As New SqlCommand("SELECT iD, description FROM myTable", con) Using reader As SqlDataReader = cmd.ExecuteReader() While reader.Read() Dim id__1 As Integer = CInt(reader("iD")) Dim desc As String = DirectCast(reader("description"), String) Console.WriteLine("ID: {0}" & vbLf & " {1}", iD, desc) End While End Using End Using End Using
الحل 1
لا يمكن للكود الذي نشرته أن يؤدي إلى هذا الخطأ. تشير رسالة الخطأ إلى تحويل شيء تم استرداده من قاعدة البيانات حيث تكون قيمة الحقل هي DbNull وأنت تحاول تحويل ذلك إلى نوع آخر.
الكود الذي نشرته لا ينفذ استعلامًا على الإطلاق. كل ما تفعله هو فتح اتصال في حدث Form_Load.
كملاحظة جانبية، يجب ألا تفتح اتصالاً بقاعدة البيانات وتبقيه مفتوحًا طوال عمر التطبيق الخاص بك. يجب عليك فتح اتصال بقاعدة البيانات فقط عندما تحتاج إلى تنفيذ استعلام، وإغلاقه في أسرع وقت ممكن.
الحل 3
تكمن المشكلة في أنك تستخدم مكتبة فئة MySql.Data الخاصة بشركة Oracle والتي تحتوي على أخطاء كبيرة. لا يتم صيانتها جيدًا ويجب تجنبها. إنه غير متوافق مع الإصدارات الأحدث من MariaDB وغالبًا ما تكون الأخطاء غير منطقية مثل تلك التي تلقيتها.
بدلًا من ذلك، قم بالتبديل إلى استخدام MySqlConnector مفتوح المصدر حقًا. الكود متطابق، كل ما عليك فعله هو تغيير سطر الواردات الموجود أعلى كل وحدة أو فئة.
[ad_2]
コメント