تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] طريقة الاتصال واغلاق الاتصال بقاعدة البيانات
#1
السلام عليك

يسعد الله اوقاتكم

عندي استفسار عن طريقه الاتصال واغلاق الاتصال بقاعدة البيانات

الكود الي عندي يعمل بحث في القاعدة اكثر من مره 

كذا
\

كود :
   Dim str As String = String.Format("Data Source= C:\LOG\DB{0}.s3db; version=3;Pooling=True;Synchronous=Off;journal mode=Memory", strcallbk)
   Dim con As New SQLiteConnection(str)



كود :
con.Open()
           Dim cmd41 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop", Stadd), con)
           cmd41.Parameters.AddWithValue("CALLop", Trim(a3))
           Dim rowCount41 As Integer = Convert.ToInt32(cmd41.ExecuteScalar())
           If rowCount41 <> 0 Then
               c1 = "QSO B"
           Else
               c1 = "NEW ON"
           End If



           Dim cmd412 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop and bands = @bands", Stadd), con)
           cmd412.Parameters.AddWithValue("CALLop", Trim(a3))
           cmd412.Parameters.AddWithValue("bands", Trim(bandsxxs))

           Dim rowCount412 As Integer = Convert.ToInt32(cmd412.ExecuteScalar())
           If rowCount412 <> 0 Then
               c1 = "QSO B"
           Else
               c1 = "NEW BAND"
           End If



           Dim cmd413 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop and modes = @modes", Stadd), con)
           cmd413.Parameters.AddWithValue("CALLop", Trim(a3))
           cmd413.Parameters.AddWithValue("modes", Trim(modesCXXX))

           Dim rowCount413 As Integer = Convert.ToInt32(cmd413.ExecuteScalar())
           If rowCount413 <> 0 Then
               c1 = "QSO B"
           Else
               c1 = "NEW MODE"
           End If




           Dim cmd414 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE country = @country", Stadd), con)
           cmd414.Parameters.AddWithValue("country", Trim(country.Text))

           Dim rowCount414 As Integer = Convert.ToInt32(cmd414.ExecuteScalar())
           If rowCount414 <> 0 Then

           Else
               c1 = "NEW Country"
           End If

           con.Close()


مثل ما ضاهر يعمل فحص اكثر من مره

في البدايه  لازم افتح الاتصال

كود :
con.Open()


ولاكن هل اغلق الاتصال مع كل فحص او في اخر فحص

جربت اغلق الاتصال في كل فحص بس طلع مشكله

كود :
 con.Open()
           Dim cmd41 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop", Stadd), con)
           cmd41.Parameters.AddWithValue("CALLop", Trim(a3))
           Dim rowCount41 As Integer = Convert.ToInt32(cmd41.ExecuteScalar())
           If rowCount41 <> 0 Then
               c1 = "QSO B"
           Else
               c1 = "NEW ON"
           End If
           con.Close()

           con.Open()
           Dim cmd412 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop and bands = @bands", Stadd), con)
           cmd412.Parameters.AddWithValue("CALLop", Trim(a3))
           cmd412.Parameters.AddWithValue("bands", Trim(bandsxxs))

           Dim rowCount412 As Integer = Convert.ToInt32(cmd412.ExecuteScalar())
           If rowCount412 <> 0 Then
               c1 = "QSO B"
           Else
               c1 = "NEW BAND"
           End If
           con.Close()

           con.Open()
           Dim cmd413 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop and modes = @modes", Stadd), con)
           cmd413.Parameters.AddWithValue("CALLop", Trim(a3))
           cmd413.Parameters.AddWithValue("modes", Trim(modesCXXX))

           Dim rowCount413 As Integer = Convert.ToInt32(cmd413.ExecuteScalar())
           If rowCount413 <> 0 Then
               c1 = "QSO B"
           Else
               c1 = "NEW MODE"
           End If
           con.Close()


           con.Open()
           Dim cmd414 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE country = @country", Stadd), con)
           cmd414.Parameters.AddWithValue("country", Trim(country.Text))

           Dim rowCount414 As Integer = Convert.ToInt32(cmd414.ExecuteScalar())
           If rowCount414 <> 0 Then

           Else
               c1 = "NEW Country"
           End If

           con.Close()



وجربت اغلق الاتصال في الاخير وطلع مشكله



كود :
Connection was closed, statement was terminated vb.net


ما هو الشي الصحيح بارك الله فيكم
الرد }}}
تم الشكر بواسطة:
#2
اخي الفاضل
تحقق دائما ما اذا كان الاتصال مفتوح ام لا ثم قم بفتحه


كود :
If con.State = ConnectionState.Open Then con.close
Don't Be The Perfect one
be the right one
الرد }}}
تم الشكر بواسطة: elgokr , dubai.eig , ابراهيم ايبو
#3
وعليكم السلام ورحمة الله وبركاته

كما وضح لك اخى boudyonline

كل ما عليك فعله هو عدم وضع كود الفتح مباشراً بهذا الشكل
كود :
con.Open()

يفضل ان تجعل الكود فى شرط التحقق حيث يقوم بالتحقق اذا كان
مغلق يقوم بفتح الاتصال لتجنباً لحدوث اتمام الفتح لاكثر من مرة
ولا يتشرط الامر فى حالة انك على دراية تامة انك تقوم باغلاق بعد نهاية كل امر

ليصبح الشكل بهذا الامر كود الفتح

كود :
If con.State = ConnectionState.Close Then con.Open


بالنهاية يبدو ان الامور لا يتعلق فى هذا النطاق فقط
وعلى اى حال بدلاً من اتمام شرح مطول عن الامر فيفضل متابعة تلك الدورة لعلها تفيدك كثيراً


تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: dubai.eig , dubai.eig , ابراهيم ايبو
#4
(21-02-19, 12:51 PM)boudyonline كتب : اخي الفاضل
تحقق دائما ما اذا كان الاتصال مفتوح ام لا ثم قم بفتحه


كود :
If con.State = ConnectionState.Open Then con.close



احسنت بارك الله فيك

مشت الامور معاي والحمدالله  Rolleyes

(21-02-19, 03:24 PM)elgokr كتب :
وعليكم السلام ورحمة الله وبركاته

كما وضح لك اخى boudyonline

كل ما عليك فعله هو عدم وضع كود الفتح مباشراً بهذا الشكل
كود :
con.Open()

يفضل ان تجعل الكود فى شرط التحقق حيث يقوم بالتحقق اذا كان
مغلق يقوم بفتح الاتصال لتجنباً لحدوث اتمام الفتح لاكثر من مرة
ولا يتشرط الامر فى حالة انك على دراية تامة انك تقوم باغلاق بعد نهاية كل امر

ليصبح الشكل بهذا الامر كود الفتح

كود :
If con.State = ConnectionState.Close Then con.Open


بالنهاية يبدو ان الامور لا يتعلق فى هذا النطاق فقط
وعلى اى حال بدلاً من اتمام شرح مطول عن الامر فيفضل متابعة تلك الدورة لعلها تفيدك كثيراً


تحياتى لك
وتمنياتى لك التوفيق

احسنت استاذي الكريم دائما نستفيد منك 

شكرا لك على المعلومات ساتابع الشرح ان شاءالله

بس سؤال 

هل هذه الطريقه تنفع 

كود :
           
If (con.State.ToString() = "Open") Then
               If con.State <> ConnectionState.Open Then con.Open()
               Dim cmd41 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop and bands = @bands and modes = @modes", Stadd), con)
               cmd41.Parameters.AddWithValue("CALLop", Trim(a3))
               cmd41.Parameters.AddWithValue("bands", Trim(bandsxxs))
               cmd41.Parameters.AddWithValue("modes", Trim(modesCXXX))
               Dim rowCount41 As Integer = Convert.ToInt32(cmd41.ExecuteScalar())
               If rowCount41 <> 0 Then

               Else
                   c1 = "M/B"
               End If


           Else

               If con.State = ConnectionState.Closed Then con.Open()
           End If
الرد }}}
تم الشكر بواسطة:
#5
الأفضل فتح الإتصال بداية الكود

ثم تنفيذ العمليات

في النهاية إغلاق الإتصال
يا رحمن الدنيا والآخرة ورحيمهما
الرد }}}
تم الشكر بواسطة: elgokr , dubai.eig , dubai.eig , ابراهيم ايبو
#6
يكتفى ان تجعل الكود بهذا الشكل

كود :
       '\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'
       If con.State <> ConnectionState.Open Then con.Open()
       '\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'

       'بداية كود الاستعلام
       Dim cmd41 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop and bands = @bands and modes = @modes", Stadd), con)
       cmd41.Parameters.AddWithValue("CALLop", Trim(a3))
       cmd41.Parameters.AddWithValue("bands", Trim(bandsxxs))
       cmd41.Parameters.AddWithValue("modes", Trim(modesCXXX))
       Dim rowCount41 As Integer = Convert.ToInt32(cmd41.ExecuteScalar())
       If rowCount41 <> 0 Then

       Else
           c1 = "M/B"
       End If
       'نهاية كود الاستعلام


       'ضع اكواد خاصة الاستعلام / البحث هنا كما تشاء


       '\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'
       con.Close()
       '\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'


طبق كما هو تم شرحه فى الكود

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: dubai.eig , dubai.eig , ابراهيم ايبو
#7
(21-02-19, 04:17 PM)elgokr كتب : وممكن أيضا هكذا : اقتباس من مشاركة المشرف العزيز elgokr

كود :
       '\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'
       If con.State <> ConnectionState.Open Then con.Open()
       '\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'
       

       'ضع اكواد خاصة الاستعلام / البحث هنا كما تشاء


       '\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'
If con.State = ConnectionState.Open Then        con.Close()
       '\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'

بالتوفيق للجميع
يا رحمن الدنيا والآخرة ورحيمهما
الرد }}}
تم الشكر بواسطة: elgokr , elgokr , dubai.eig
#8
(21-02-19, 04:09 PM)حريف برمجة كتب : الأفضل فتح الإتصال بداية الكود

ثم تنفيذ العمليات

في النهاية إغلاق الإتصال

احسنت استاذي الكريم

شكرا لوجودك الحمدالله والشكر Rolleyes

(21-02-19, 04:17 PM)elgokr كتب : يكتفى ان تجعل الكود بهذا الشكل

كود :
       '\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'
       If con.State <> ConnectionState.Open Then con.Open()
       '\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'

       'بداية كود الاستعلام
       Dim cmd41 As New SQLiteCommand(String.Format("SELECT * FROM DB{0} WHERE CALLop = @CALLop and bands = @bands and modes = @modes", Stadd), con)
       cmd41.Parameters.AddWithValue("CALLop", Trim(a3))
       cmd41.Parameters.AddWithValue("bands", Trim(bandsxxs))
       cmd41.Parameters.AddWithValue("modes", Trim(modesCXXX))
       Dim rowCount41 As Integer = Convert.ToInt32(cmd41.ExecuteScalar())
       If rowCount41 <> 0 Then

       Else
           c1 = "M/B"
       End If
       'نهاية كود الاستعلام


       'ضع اكواد خاصة الاستعلام / البحث هنا كما تشاء


       '\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'
       con.Close()
       '\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'


طبق كما هو تم شرحه فى الكود

تحياتى لك
وتمنياتى لك التوفيق


تم التطبيق والحمدالله  الامور طيبه ولله الحمد

سابقا كانت تطلع لي رساله

كود :
Exception thrown: 'System.IndexOutOfRangeException' in System.Data.SQLite.dll


حاليا لم تطلع

احسنت بارك الله فيك



بس بعد اذنك استاذي ممكن تمر هنا 
http://vb4arb.com/vb/showthread.php?tid=28430
الرد }}}
تم الشكر بواسطة: elgokr , elgokr , ابراهيم ايبو
#9
الحمد لله والشكر لله
والحمد لله على كل حال

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: dubai.eig


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] طريقة تفعيل الشاشة الصغيرة في جهاز الكاشير MOHAMMED ALZWI 0 254 25-09-25, 02:17 PM
آخر رد: MOHAMMED ALZWI
  [VB.NET] كود الاتصال بالنت mmaalmesry 4 871 04-09-25, 02:28 PM
آخر رد: أبو خالد الشكري
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,858 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  تصدير البيانات إلى ملف RTF مصمم هاوي 4 824 15-08-25, 04:13 PM
آخر رد: أبو خالد الشكري
  [VB.NET] ما هو أفضل موقع استضافة لقواعد البيانات MSSQL ؟ mmaalmesry 0 796 16-07-25, 10:45 PM
آخر رد: mmaalmesry
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,222 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  مشكلة في حفظ البيانات مصمم هاوي 2 1,019 30-06-25, 08:51 AM
آخر رد: مصمم هاوي
  بطء في جلب البيانات مصمم هاوي 9 1,001 08-05-25, 07:51 AM
آخر رد: مصمم هاوي
  تعديل كود تحديث البيانات مصمم هاوي 1 784 26-04-25, 06:07 PM
آخر رد: مصمم هاوي
Photo لايمكن تعرف على تنسيق قاعدة البيانات الدريساوي 2 697 26-04-25, 12:24 AM
آخر رد: الدريساوي

التنقل السريع :


يقوم بقرائة الموضوع: