طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - dubai.eig - 21-02-19
السلام عليك
يسعد الله اوقاتكم
عندي استفسار عن طريقه الاتصال واغلاق الاتصال بقاعدة البيانات
الكود الي عندي يعمل بحث في القاعدة اكثر من مره
كذا
\
كود :
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()
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
ما هو الشي الصحيح بارك الله فيكم
RE: طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - boudyonline - 21-02-19
اخي الفاضل
تحقق دائما ما اذا كان الاتصال مفتوح ام لا ثم قم بفتحه
كود :
If con.State = ConnectionState.Open Then con.close
RE: طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - elgokr - 21-02-19
وعليكم السلام ورحمة الله وبركاته
كما وضح لك اخى boudyonline
كل ما عليك فعله هو عدم وضع كود الفتح مباشراً بهذا الشكل
يفضل ان تجعل الكود فى شرط التحقق حيث يقوم بالتحقق اذا كان
مغلق يقوم بفتح الاتصال لتجنباً لحدوث اتمام الفتح لاكثر من مرة
ولا يتشرط الامر فى حالة انك على دراية تامة انك تقوم باغلاق بعد نهاية كل امر
ليصبح الشكل بهذا الامر كود الفتح
كود :
If con.State = ConnectionState.Close Then con.Open
بالنهاية يبدو ان الامور لا يتعلق فى هذا النطاق فقط
وعلى اى حال بدلاً من اتمام شرح مطول عن الامر فيفضل متابعة تلك الدورة لعلها تفيدك كثيراً
تحياتى لك
وتمنياتى لك التوفيق
RE: طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - dubai.eig - 21-02-19
(21-02-19, 12:51 PM)boudyonline كتب : اخي الفاضل
تحقق دائما ما اذا كان الاتصال مفتوح ام لا ثم قم بفتحه
كود :
If con.State = ConnectionState.Open Then con.close
احسنت بارك الله فيك
مشت الامور معاي والحمدالله 
(21-02-19, 03:24 PM)elgokr كتب : وعليكم السلام ورحمة الله وبركاته
كما وضح لك اخى boudyonline
كل ما عليك فعله هو عدم وضع كود الفتح مباشراً بهذا الشكل
يفضل ان تجعل الكود فى شرط التحقق حيث يقوم بالتحقق اذا كان
مغلق يقوم بفتح الاتصال لتجنباً لحدوث اتمام الفتح لاكثر من مرة
ولا يتشرط الامر فى حالة انك على دراية تامة انك تقوم باغلاق بعد نهاية كل امر
ليصبح الشكل بهذا الامر كود الفتح
كود :
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
RE: طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - حريف برمجة - 21-02-19
الأفضل فتح الإتصال بداية الكود
ثم تنفيذ العمليات
في النهاية إغلاق الإتصال
RE: طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - elgokr - 21-02-19
يكتفى ان تجعل الكود بهذا الشكل
كود :
'\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'
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()
'\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'
طبق كما هو تم شرحه فى الكود
تحياتى لك
وتمنياتى لك التوفيق
RE: طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - حريف برمجة - 21-02-19
(21-02-19, 04:17 PM)elgokr كتب : وممكن أيضا هكذا : اقتباس من مشاركة المشرف العزيز elgokr
كود :
'\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'
If con.State <> ConnectionState.Open Then con.Open()
'\\\\\\\\\\\\\\\\ كود فتح الاتصال /////////////'
'ضع اكواد خاصة الاستعلام / البحث هنا كما تشاء
'\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'
If con.State = ConnectionState.Open Then con.Close()
'\\\\\\\\\\\\\\\\ كود اغلاق الاتصال /////////////'
بالتوفيق للجميع
RE: طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - dubai.eig - 21-02-19
(21-02-19, 04:09 PM)حريف برمجة كتب : الأفضل فتح الإتصال بداية الكود
ثم تنفيذ العمليات
في النهاية إغلاق الإتصال
احسنت استاذي الكريم
شكرا لوجودك الحمدالله والشكر 
(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
RE: طريقة الاتصال واغلاق الاتصال بقاعدة البيانات - elgokr - 22-02-19
الحمد لله والشكر لله
والحمد لله على كل حال
تحياتى لك
وتمنياتى لك التوفيق
|