Visual Basic.NET - Novato Acceso a Datos

 
Vista:

Novato Acceso a Datos

Publicado por JCdev (2 intervenciones) el 27/08/2009 18:03:20
Hola. Alguien puede ayudarme:
Soy novato y estoy trabajando con 5000000 de registros. En memoria creo una tabla en 3 segundos, pero cuando intento en SQL esto se me relentiza (de hecho no me termina por que la corto) aunque si veo como crece la base de datos - lo corté con 200 mb. aproximadamente, tras mas de una hora.

Algo no hago bien o es que SQL no es tan bueno como dicen?

Mi codigo es sencillo con solo 2 o 3 campos. Es algo así:

Dim Conexion As New SqlConnection
Conexion.ConnectionString = "Data Source= . . . . .Security=True"
Try
Conexion.Open()
Catch ex As Exception
MsgBox("no conecto con la base de datos")
Exit Sub
End Try

Dim Consulta As New SqlCommand("select * from TABLA", Conexion)
Dim Adaptador As New SqlDataAdapter
Adaptador.SelectCommand = Consulta
Dim DatasetTabla As New DataSet
Adaptador.Fill(DatasetTabla, "TABLA")
Dim Tabla As DataTable = DatasetTabla.Tables("TABLA")
Dim i As Integer = 0
Dim Registro As DataRow
Dim constructor As SqlCommandBuilder = New SqlCommandBuilder(Adaptador)
for i = 1 to 5000000
Registro = tabla.NewRow
Registro("IDCampo1") = i
Registro("Campo2") = "Cadena"
Tabla.Rows.Add(Registro)
Next i
Adaptador.Update(Tabla)
Tabla.AcceptChanges()
Adaptador = Nothing
Conexion.Close()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Novato Acceso a Datos

Publicado por Damian (824 intervenciones) el 28/08/2009 16:16:37
Cambia tu codigo por esto y me cuentas

Dim Conexion As String = "Data Source=..............
Dim MiConexion As New SqlConnection(Conexion)
Dim Com, Insert As New SqlCommand
Dim i As Integer = 0

Com = New SqlCommand()
If MiConexion.State = ConnectionState.Open Then
MiConexion.Close()
End If
MiConexion.Open()

Registro("IDCampo1") = i
Registro("Campo2") = "Cadena"

for i = 1 to 5000000
Insert.CommandText = "Insert into TABLA(IDCampo1,Campo2)" _
& "values(" & i & ",'cadena')"
Insert.Connection = MiConexion
Insert.ExecuteNonQuery()
next

Com=Nothing
MiConexion.Close()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar