MySQL .NET usando DataSet
Frecuentes
Visto 8,725 veces
0
Dim update_status = False
Dim tableName = "SF6SETUP"
Dim conn As MySqlConnection = New MySqlConnection(cs)
Dim da As MySqlDataAdapter = New MySqlDataAdapter()
'Dim cmd As MySqlCommand = New MySqlCommand("SELECT * FROM SF6SETUP")
Dim ds As DataSet = New DataSet()
' Open connection as late as possible to get data.
conn.Open()
da.SelectCommand = New MySqlCommand("SELECT * FROM SF6SETUP")
da.SelectCommand.Connection = conn
da.Fill(ds)
' Make a change to some row then update it.
ds.Tables(0).Rows(0).Item("O2AreaCts") = "73333337"
ds.AcceptChanges()
da.Update(ds)
conn.Close()
¿Puede alguien por favor ayudarme a averiguar qué estoy haciendo mal? No recibo ningún error. No se han realizado cambios en la tabla.
Por qué ?!!!
1 Respuestas
1
AcceptChanges
solo actualiza las filas en el DataSet (en la memoria). Cambia el estado a unchanged
. Si desea actualizar sus filas en la base de datos, llame a su TableAdapter's
Update
método. Este método llamará AcceptChanges
implícitamente.
ds.Tables(0).Rows(0).Item("O2AreaCts") = "73333337"
ds.AcceptChanges() ' this will prevent the update in the next line '
da.Update(ds) ' this would call AcceptChanges implicitely after the database was updated '
Tenga en cuenta que no necesita abrir/cerrar la conexión cuando usa un DataAdapter
. Será abierto/cerrado en el Fill
método.
Aparte de eso, no ha proporcionado una ActualizarComando para DataAdapter
como Christopher ya ha mencionado. Pero ese sería el siguiente problema ya que normalmente lo harías. obtener una excepción cuando falta.
Puede usar el DataSet.GetChanges
para obtener todas las filas modificadas. Supongo que esto no devuelve nada.
Editar: Ok, aquí hay un ejemplo para mostrar cómo proporcionar un UpdateCommand
(asumiendo que tiene una columna de ID)
' Create the UpdateCommand.
Dim sql = "UPDATE SF6SETUP SET O2AreaCts=?O2AreaCts WHERE id=?oldId"
da.UpdateCommand = New MySqlCommand(sql, conn)
da.UpdateCommand.Parameters.Add("?O2AreaCts", MySqlDbType.VarChar, 50, "O2AreaCts" )
da.UpdateCommand.Parameters.Add("?oldId", MySqlDbType.VarChar, 50, "id")
contestado el 23 de mayo de 12 a las 18:05
Hola Tim. Eliminé ds.AcceptChanges() y solo dejé da.Update(ds) todavía no sucedió nada. No se han realizado cambios en la tabla ni se han vuelto a producir errores. - micro
@mike: ¿Qué hace ds.GetChanges
volver antes de la actualización, nada? Aparte de eso, debe proporcionar un UpdateCommand para el DataAdapter. Me he perdido ese punto en mi respuesta. Pero ese sería el siguiente problema, ya que asumo que no hay cambios, de lo contrario, obtendría una excepción por el UpdateCommand faltante. msdn.microsoft.com/en-us/library/… - Tim Schmelter
Parece que es nulo. Lo que estoy tratando de hacer es hacer que DataSet haga cambios en él y luego usar ese DataSet para actualizar MySQL. - micro
Información adicional: la actualización requiere un UpdateCommand válido cuando se pasa la colección DataRow con filas modificadas. - micro
conn.Open() ' Abrir la conexión lo más tarde posible para obtener datos. da.SelectCommand = New MySqlCommand("SELECT * FROM SF6SETUP", conn) da.Fill(ds) 'ds.Rows(0).Item("Title") = "73333337" ' Realice un cambio en alguna fila y luego actualícelo . ds.Tables(0).Rows(0).Item(0) = "73333337" Try da.Update(ds) Catch ex As MySqlException MessageBox.Show(e.ToString()) End Try conn.Close() - micro
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas .net mysql dataset or haz tu propia pregunta.
¿Necesita configurar el UpdateCommand también? dev.mysql.com/doc/refman/5.0/es/… - Christopher Rathermel