Visual Basic.NET - No graba los Cambios en la base de datos

 
Vista:

No graba los Cambios en la base de datos

Publicado por Diego Garcia (1 intervención) el 04/07/2007 20:30:28
Tengo una aplicación que utiliza una base de datos Sql y en tiempo de ejecución cuando agrego un nuevo registro anda todo bien, pero el registro no es agregado en la base de datos, solo queda en memoria, o sea que cuando cierro la aplicación, el registro nuevo no es guardado en la base de datos.

Mi base de datos es muy simple, consiste de 3 campos: Nombre,Unidad y valor que son strings

les dejo el código de VB.net que tengo para ver en que me equivoco ya que no se que mas hacer ya que he probado con los asistentes que tiene el vb.net y con comandos y el resultado es el mismo, no graba los cambios. Trato de dejar lo mas documentado el código así lo comprenden bien

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

' obtener cadena
Dim ConnectionString As String = My.Settings.BDConnectionString
Dim oCnn As SqlConnection

'Crea Conexion

oCnn = New SqlConnection(ConnectionString)
oCnn.Open()

'Crea Comando

Dim oCmd As New SqlCommand
oCmd.Connection = oCnn
oCmd.CommandType = CommandType.Text
oCmd.CommandText = "Select * From Personal"

'Crea el Dataadapter
Dim oDataAdapter As New SqlDataAdapter(oCmd)

'Crea El DataSet
Dim oDataSet As New DataSet

'Llenamos Dataset
oDataAdapter.Fill(oDataSet, "Personal")

'Creamos Fila En Blanco
Dim oNewRow As DataRow
oNewRow = oDataSet.Tables("Personal").NewRow

'Asignamos Valores a la fila
oNewRow("Nombre") = Nombretxt.Text
oNewRow("Unidad") = UnidadTxt.Text
oNewRow("Valor") = PrecioTxt.Text

'Agregamos la nueva Fila a la coleccion Existente
oDataSet.Tables("Personal").Rows.Add(oNewRow)

'Creamos un CommandBuilder
Dim oCommandBuilder As New SqlCommandBuilder(oDataAdapter)

'Actualizamos el existente con los nuevos Comandos
oDataAdapter = oCommandBuilder.DataAdapter

'Actualizamos la Base de Datos

oDataAdapter.Update(oDataSet.Tables("personal"))

'Cerramos La Base

oCnn.Close()

End Sub
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:No graba los Cambios en la base de datos

Publicado por OliBeer (391 intervenciones) el 05/07/2007 16:24:03
Pues, lo que alcanzo a detectar, es exactamente lo que dices. Tu estás haciendo el manejo de los datos, por medio de la memoria.

Cuando llenas el dataset con: "Select * From Personal", y después agregar una fila al Dataset, después con esto: oDataAdapter.Update(oDataSet.Tables("personal")) , todo lo estás haciendo en la memoria y en ningún lado le estás diciendo que guarde en la DB.

Creo que te hace falta un InsertCommand o un UpdateCommand acompañado de un ExecuteNonQuery.
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

RE:No graba los Cambios en la base de datos

Publicado por Stiv (36 intervenciones) el 07/07/2007 13:33:04
Tendría que funcionar así, porque al crear los command también creas el INSERT y el UPDATE, que se ejecutan en el update del tableadapter. Lo que me parece que está mal es que haces un update sobre la tabla "personal" del dataset y al principio la has nombrado "Personal" y por eso no actualiza nada.

Un saludo.
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