PDA

View Full Version : کاهش سرعت در بارگزاری اطلاعات



Hossis
شنبه 07 خرداد 1390, 17:29 عصر
من با استفاده از روش زیر به بانک اطلاعاتی وصل می شوم اما سرعت بارگزاری اطلاعات خیلی کند است و کاربر باید چند ثانیه ای صبر کند تا جستجو انجام شده و نتیجه آن برایش لیست شود.
البته دقت داشته باشید که حجم اطلاعات هم زیاد است و به عنوان مثال فایل بانک اطلاعاتی 35 تا 70 مگابایت می رسد.
به نظر شما راه سریعتری برای این کار هست؟؟
این هم کد مورد نظر

#Region "SQL Declaration"
Dim CnnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\db.accdb"
Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim cnn As New OleDbConnection(CnnStr)
Dim ra As Integer
Dim DG As New DataGridView With {.parent = Me, .visible = False}
end region

#Region "SQL Codes"

''' <summary>
''' اضافه کردن يک رکورد به بانک
''' </summary>
''' <param name="Filds">نام فيلدها: بين آنها ويرگول(،) بگذاريد</param>
''' <param name="Valus">مقادير (مقدار1،مقدار2 ،...)به ترتيب نام فيلدها</param>
''' <remarks></remarks>
Private Sub AddFields(ByVal Filds As String, ByVal Valus As String)

cnn.Open()
Dim sql As String = "Insert INTO Pro (" & Filds & ")VALUES ('" & Valus & ")"
Dim cmd As New OleDbCommand(sql, cnn)
ra = cmd.ExecuteNonQuery()
cnn.Close()
End Sub

''' <summary>
''' فراخواني مقاديري از ديتابيس
''' </summary>
''' <param name="table">نام حدول</param>
''' <param name="Fields">نام فيلدهايي که بار شوند. (*) براي بارگزاري همه</param>
''' <param name="where">شرطي که اعمال مي شود مثلا Id=35</param>
''' <remarks>
''' پس از پايان عمليات، تمام نتايج در ديتاگريدي به نام ريخته مي شود به نام
''' DG</remarks>
Private Sub Search(ByVal table As String, ByVal Fields As String, ByVal where As String)

Dim cnn As OleDbConnection

cnn = New OleDbConnection(CnnStr)
cnn.Open()
Da = New OleDbDataAdapter("Select " & Fields & " from " & table & " Where " & where, cnn)
DS.Clear()
Da.Fill(DS, table)
DG.DataSource = DS.Tables(table)

cnn.Close()
'For Each R As DataGridViewRow In DG.Rows
' If R.Cells(0).Value = Nothing Then Exit For
' txId.Text = R.Cells(0).Value
' tx1.Text = R.Cells(1).Value
' tx2.Text = R.Cells(2).Value
' tx3.Text = R.Cells(3).Value
' '...
'Next

End Sub

''' <summary>
''' به روزرساني جدول و آپديت آن
''' </summary>
''' <param name="table">نام جدولي که بايد آپديت شود.</param>
''' <param name="Fields">آرايه اي از نام فيلدها</param>
''' <param name="values">مقادير مطابق با نام فيلدها(براي مقادير متني کاراکتر 'را نيز به دوطرف آن بيفزاييد مثل 'نام'و غيره</param>
''' <param name="Where">شرط مورد نظر</param>
''' <remarks></remarks>
Private Sub Update(ByVal table As String, ByVal Fields() As String, ByVal values() As Object, ByVal Where As String)
Dim fld As String = ""

For i As Short = 0 To Fields.Length - 1
fld &= Fields(i) & "=" & values(i) & ","
Next
fld &= "|\|"
fld = fld.Replace(",|\|", "")

cnn.Open()
Dim sql As String = "Update " & table & " Set " & fld & " Where " & Where
Dim cmd As New OleDbCommand(sql, cnn)
ra = cmd.ExecuteNonQuery()
cnn.Close()
End Sub

''' <summary>
''' حذف يک رکورد از جدول
''' </summary>
''' <param name="table">نام جدولي که يک رديف از آن حذف مي شود</param>
''' <param name="Where">شرط مورد نظر مثل
''' Id=35</param>
''' <remarks></remarks>
Private Sub Delete(ByVal table As String, ByVal Where As String)
cnn.Open()

Dim sql As String = "Delete From " & table & " Where " & Where
Dim cmd As New OleDbCommand(sql, cnn)
ra = cmd.ExecuteNonQuery()
cnn.Close()
End Sub

#End Region