Ali.Paivar
دوشنبه 18 آذر 1392, 18:04 عصر
سلام دوستان
من برنامه ای نوشته بودم چند سال پیش تو وی بی 6 که طی یک پروسه حدود 300 هزار رکورد رو تو یه جدول درج میکرد و زمان پروسه هم حدود یک دقیقه بود. حالا میخوام همین برنامه رو با وی بی 2010 بنویسم ولی به مشکل برخوردم.قطعه کدی که در ادامه گذاشتم دوستان لطف کنید بگید که اشکال کد از کجاست؟
برنامه کار میکنه ولی سرعت خیلی کمه مثلا درج 40 هزار رکورد تو وی بی کمتر از یه ثانیه طول میکشه در حالیکه با Ado.net یا Odbc بیشتر از 60 ثانیه!
ممنون میشم اگه اساتید راهنمایی کنن.
نمونه کد برنامه وی بی 6 :
Dim dB As DAO.Database
Dim RS As DAO.Recordset
'------------------------
dB = OpenDatabase(App.Path + "\Data\Data.mdb", False, False)
RS = dB.OpenRecordset("Select * From Main")
Dim i, j As Integer
Dim Int1, Int2, Int3 As Integer
Dim Str1 As String
Int1 = 100
Int2 = 200
Int3 = 300
Str1 = " Memo Size String "
For i = 1 To 200
For j = 1 To 200
RS.AddNew()
RS.Fields(0) = Int1
RS.Fields(1) = Int2
RS.Fields(2) = Int3
RS.Fields(3) = Str1
RS.Update()
Next
Next
نمونه کد برنامه وی بی 2010 :
Oledb :
'Imports System.Data
'Imports System.Data.OleDb
'------------------------
Dim i, j As Integer
Dim Int1, Int2, Int3 As Integer
Dim Str1 As String
Dim Con As New OleDb.OleDbConnection
Dim Cmd As New OleDb.OleDbCommand
Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Data\Data.mdb"
Cmd.Connection = Con
Con.Open()
Int1 = 100
Int2 = 200
Int3 = 300
Str1 = " Memo Size String "
For i = 1 To 200
For j = 1 To 200
Cmd.CommandText = "Insert into Main(Int1,Int2,Int3,Str1)values(" & Int1 & "," & Int2 & "," & Int3 & ",'" & Str1 & "')"
Cmd.ExecuteNonQuery()
Next
Next
Con.Close()
Odbc :
'Imports System.Data
'Imports System.Data.Odbc
'------------------------
Dim i, j As Integer
Dim Int1, Int2, Int3 As Integer
Dim Str1 As String
Dim OdbcCon As System.Data.Odbc.OdbcConnection
OdbcCon = New OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};" & "Dbq=|DataDirectory|\Data\Data.mdb;")
Dim cmd As New OdbcCommand
OdbcCon.Open()
Int1 = 100
Int2 = 200
Int3 = 300
Str1 = " Memo Size String "
For i = 1 To 200
For j = 1 To 200
cmd.Connection = OdbcCon
cmd.CommandText = "Insert into Main(Int1,Int2,Int3,Str1)values(" & Int1 & "," & Int2 & "," & Int3 & ",'" & Str1 & "')"
cmd.ExecuteNonQuery()
Next
Next
OdbcCon.Close()
من برنامه ای نوشته بودم چند سال پیش تو وی بی 6 که طی یک پروسه حدود 300 هزار رکورد رو تو یه جدول درج میکرد و زمان پروسه هم حدود یک دقیقه بود. حالا میخوام همین برنامه رو با وی بی 2010 بنویسم ولی به مشکل برخوردم.قطعه کدی که در ادامه گذاشتم دوستان لطف کنید بگید که اشکال کد از کجاست؟
برنامه کار میکنه ولی سرعت خیلی کمه مثلا درج 40 هزار رکورد تو وی بی کمتر از یه ثانیه طول میکشه در حالیکه با Ado.net یا Odbc بیشتر از 60 ثانیه!
ممنون میشم اگه اساتید راهنمایی کنن.
نمونه کد برنامه وی بی 6 :
Dim dB As DAO.Database
Dim RS As DAO.Recordset
'------------------------
dB = OpenDatabase(App.Path + "\Data\Data.mdb", False, False)
RS = dB.OpenRecordset("Select * From Main")
Dim i, j As Integer
Dim Int1, Int2, Int3 As Integer
Dim Str1 As String
Int1 = 100
Int2 = 200
Int3 = 300
Str1 = " Memo Size String "
For i = 1 To 200
For j = 1 To 200
RS.AddNew()
RS.Fields(0) = Int1
RS.Fields(1) = Int2
RS.Fields(2) = Int3
RS.Fields(3) = Str1
RS.Update()
Next
Next
نمونه کد برنامه وی بی 2010 :
Oledb :
'Imports System.Data
'Imports System.Data.OleDb
'------------------------
Dim i, j As Integer
Dim Int1, Int2, Int3 As Integer
Dim Str1 As String
Dim Con As New OleDb.OleDbConnection
Dim Cmd As New OleDb.OleDbCommand
Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Data\Data.mdb"
Cmd.Connection = Con
Con.Open()
Int1 = 100
Int2 = 200
Int3 = 300
Str1 = " Memo Size String "
For i = 1 To 200
For j = 1 To 200
Cmd.CommandText = "Insert into Main(Int1,Int2,Int3,Str1)values(" & Int1 & "," & Int2 & "," & Int3 & ",'" & Str1 & "')"
Cmd.ExecuteNonQuery()
Next
Next
Con.Close()
Odbc :
'Imports System.Data
'Imports System.Data.Odbc
'------------------------
Dim i, j As Integer
Dim Int1, Int2, Int3 As Integer
Dim Str1 As String
Dim OdbcCon As System.Data.Odbc.OdbcConnection
OdbcCon = New OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};" & "Dbq=|DataDirectory|\Data\Data.mdb;")
Dim cmd As New OdbcCommand
OdbcCon.Open()
Int1 = 100
Int2 = 200
Int3 = 300
Str1 = " Memo Size String "
For i = 1 To 200
For j = 1 To 200
cmd.Connection = OdbcCon
cmd.CommandText = "Insert into Main(Int1,Int2,Int3,Str1)values(" & Int1 & "," & Int2 & "," & Int3 & ",'" & Str1 & "')"
cmd.ExecuteNonQuery()
Next
Next
OdbcCon.Close()