PDA

View Full Version : سوال: آیا یک بار بازکردن دیتابیس در تمام عملیات مناسب است؟



f_seyrafian
دوشنبه 25 شهریور 1398, 23:11 عصر
با سلام
فرض کنید در برنامه ای که نوشته شده چند فرم داریم که در هر کدام از این فرم ها چند دکمه وجود دارد که با زدن هر دکمه جدول های بانک اطلاعات فراخوانی و عملیاتی بر روی آنها اجرا می شود.
حال سوال اینجاست که سرعت فرایند کدام روش بیشتر است. وقتی پروژه باز میشود بانک اطلاعات را باز می کنیم و عملیات را بر روی جداول اجرا و در پایان فرم (یا پروژه) بانک اطلاعات را ببندیم یا اینکه برای هر اجرا (دکمه) بانک را بازکنیم عملیات را بر روی جدول انجام سپس ببندیم و برای دکمه بعدی هم این عملیات تکرار شود.
در حالت اول بخشی از حافظه به بازنگهداشتن بانک اطلاعات اختصاص می‌یابد و در حالت دوم هربار فراخوانی بانک زمانی را به خود اختصاص می دهد.
باتشکر

gilsoft
چهارشنبه 27 شهریور 1398, 08:07 صبح
با سلام
فرض کنید در برنامه ای که نوشته شده چند فرم داریم که در هر کدام از این فرم ها چند دکمه وجود دارد که با زدن هر دکمه جدول های بانک اطلاعات فراخوانی و عملیاتی بر روی آنها اجرا می شود.
حال سوال اینجاست که سرعت فرایند کدام روش بیشتر است. وقتی پروژه باز میشود بانک اطلاعات را باز می کنیم و عملیات را بر روی جداول اجرا و در پایان فرم (یا پروژه) بانک اطلاعات را ببندیم یا اینکه برای هر اجرا (دکمه) بانک را بازکنیم عملیات را بر روی جدول انجام سپس ببندیم و برای دکمه بعدی هم این عملیات تکرار شود.
در حالت اول بخشی از حافظه به بازنگهداشتن بانک اطلاعات اختصاص می‌یابد و در حالت دوم هربار فراخوانی بانک زمانی را به خود اختصاص می دهد.
باتشکر

سلام دوست عزیز

از نظر من حالت دوم مناسب تره .. (خودم از حالت دوم استفاده می‌کنم )

پیشنهاد می‌کنم در مورد کپسوله سازی تحقیق و مطالعه کنید ....

f_seyrafian
پنج شنبه 28 شهریور 1398, 19:47 عصر
با سلام و تشکر از پاسخ شما
تعریف کلاس ها و مدول ها (کپسوله کردن) را برای هر دو روش می توان به کار برد، در روش دوم چنانچه برنامه تحت شبکه باشد هر بار بخواهیم به بانک اطلاعات (سرور اصلی) وصل بشیم کلی طول میکشه اما از طرفی هم سرور به محض اینکه اطلاعات (رکورد، ...) خودش را به کلایت داد ارتباط اطلاعات قطع میشه و از تراکم کاربران شبکه کم میشه (افزایش کارایی و سرعت سرور)
حال تو حالت اول یک بار وصل میشیم بعد دیگه فقط از سرور استفاده می کنیم فقط این موضوع پیش میاد که سرور مشغوله
توی تعداد زیاد بانک اطلاعاتی روش دوم خوبه
اما توی تعداد بانک اطلاعات کم فکر کنم روش اول بهتر باشه
نمی دانم این خیلی مهم که وقتی سرور را باز کردیم فضایی برای داده ها دوباره اشغال میشه یا فقط زمان فراخوانی رکورد ها به اندازه همان رکوردهای فراخوانی شده حافظه اشغال میشود که با بستن دیتاست یا دیتاریدر این مشکا حل میشه




Public Class Form1
Dim my_cn As New SqlConnection
Dim my_cm As New SqlCommand
Dim dr As SqlDataReader
Dim path As String
Dim strcon As String
path = "server=(local);database=mydatabase;integrated security=false;" _
& "Persist Security Info=true;User ID=----;Password=-----"
my_cn.ConnectionString = path
my_cn.Open()
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
strcon = "select id from tb where a1 like a2"

my_cm.CommandText = strcon
my_cm.Connection = my_cn
dr = my_cm.ExecuteReader
dr.read()
dim a3 as string=dr("id").ToString
dr.close
strcon = "select id from tb where b1 like b2"

my_cm.CommandText = strcon
my_cm.Connection = my_cn
dr = my_cm.ExecuteReader
dr.read()
dim b3 as string=dr("id").ToString
dr.close
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
strcon = "select id from tb2 where a1 like a2"
my_cm.CommandText = strcon
my_cm.Connection = my_cn
dr = my_cm.ExecuteReader
dr.read()
dim c3 as string=dr("id").ToString
dr.close
strcon = "select id from tb2 where b1 like b2"
my_cm.CommandText = strcon
my_cm.Connection = my_cn
dr = my_cm.ExecuteReader
dr.read()
dim d3 as string=dr("id").ToString
dr.close
End Sub
my_cm = Nothing
my_cn.Close()
my_cn = Nothing
end class
یا
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim my_cn As New SqlConnection
Dim my_cm As New SqlCommand
Dim dr As SqlDataReader
Dim path As String
Dim strcon As String
path = "server=(local);database=mydatabase;integrated security=false;" _
& "Persist Security Info=true;User ID=----;Password=-----"
my_cn.ConnectionString = path
my_cn.Open()

strcon = "select id from tb where a1 like a2"
my_cm.CommandText = strcon
my_cm.Connection = my_cn
dr = my_cm.ExecuteReader
dr.read()
dim a3 as string=dr("id").ToString
dr.close
strcon = "select id from tb where b1 like b2"
my_cm.CommandText = strcon
my_cm.Connection = my_cn
dr = my_cm.ExecuteReader
dr.read()
dim b3 as string=dr("id").ToString
dr.close
my_cm = Nothing
my_cn.Close()
my_cn = Nothing

End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim my_cn As New SqlConnection
Dim my_cm As New SqlCommand
Dim dr As SqlDataReader
Dim path As String
Dim strcon As String
path = "server=(local);database=mydatabase;integrated security=false;" _
& "Persist Security Info=true;User ID=----;Password=-----"
my_cn.ConnectionString = path
my_cn.Open()

my_cn.ConnectionString = path
my_cn.Open()
strcon = "select id from tb2 where a1 like a2"
my_cm.CommandText = strcon
my_cm.Connection = my_cn
dr = my_cm.ExecuteReader
dr.read()
dim c3 as string=dr("id").ToString
dr.close
strcon = "select id from tb2 where b1 like b2"
my_cm.CommandText = strcon
my_cm.Connection = my_cn
dr = my_cm.ExecuteReader
dr.read()
dim d3 as string=dr("id").ToString
dr.close
my_cm = Nothing
my_cn.Close()
my_cn = Nothing
End Sub
end class