Mysql DataAdapter更新方法 - 不保存更改 [英] Mysql DataAdapter Update Method - Doesn't Save Changes

查看:161
本文介绍了Mysql DataAdapter更新方法 - 不保存更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在vb.net中使用MySQL
Datagridview正确显示,一切正常,当我尝试使用update(method)
更新数据库中的更改时出现问题。默认情况下数据更新在内存中被删除的学生ID =2
但在数据库中没有更新,我正在阅读文档,应该使用更新
datosAlumnos.Update ds,alumnos)

 导入MySql.Data.MySqlClient 
公共类Form1
Dim con As New MySqlConnection
Dim stringCon As String =server = localhost; user id = root; password =; database = centroeducativo
Dim listViewAlumnos As New ListBox()

Dim ds As New DataSet()
Private Sub Form1_Load(ByVal sender As Object,_
ByVal e As System.EventArgs)处理MyBase.Load
尝试
con.ConnectionString = stringCon
con.Open()
Dim datosTablas As New MySqlDataAdapter(SHOW TABLES,con)
Dim datosAlumnos As New MySqlDataAdapter(SELECT * FROM alumnos ORDER BY Nombre,con)
Dim datosAsignaturas As New MySqlDataAdapter(SELECT * FROM asignaturas,con)
Dim datosMatriculas As New MySqlDataAdapter(SELECT * FROM matriculas,con)

datosTablas.Fill(ds,tablas)
datosAlumnos.Fill ds,alumnos)
datosAsignaturas.Fill(ds,asignaturas)
datosMatriculas.Fill(ds,matriculas)

con.Close()

Dim tabla As DataTable
tabla = ds.Tables(tablas)
Dim fila As DataRow
Me.ListBox1.Items.Clear()
对于每个fila In tabla.Rows

Me.ListBox1.Items.Add(fila.Item(Tables_in_centroeducativo))
Next
Dim filaBorrada As DataRow()= ds.Tables(alumnos)。Select(id = 2)
filaBorrada(0).Delete()
datosAlumnos.Update ,alumnos)
Catch ex As Exception

结束尝试
End Sub


私有子formularioTabla(ByVal发送方作为系统。 Object,ByVal e As System.EventArgs)处理ListBox1.SelectedIndexChanged
Dim curItem As String = ListBox1.SelectedItem.ToString()
选择案例curItem
案例alumnos
FormularioAlumno )
案例asignaturas
FormularioAsignaturas()
案例matriculas
FormularioMatriculas()
案例Else
MsgBox(none)
End Select
End Sub

Private Sub FormularioAlumno()
Panel1.Controls.Clear()
Dim dv As DataView = ds.Ta bles(alumnos)DefaultView
con.Close()
Dim DataGridView As New DataGridView()
Panel1.Controls.Add(DataGridView)
DataGridView.AutoSize = True
DataGridView.DataSource = dv
DataGridView.Columns(id)。Visible = False
End Sub
结束类


解决方案

似乎忘了设置 InsertCommand UpdateCommand ,特别是 Deletecommand



要使数据适配器更新e数据,应该有这些命令。您可以手动设置这些命令,也可以使用 MySqlCommandBuilder

  Dim myConn As New MySqlConnection (连接字符串)
Dim myDataAdapter As New MySqlDataAdapter()
myDataAdapter.SelectCommand =新建MySqlCommand(Select Query,myConn)
Dim myCommandBuilder As MySqlCommandBuilder = New MySqlCommandBuilder(myDataAdapter)


I'm using MySQL in vb.net Datagridview displayed correctly and everything works properly, the problem arises when I try to update the changes in the database with the update (method) By default the data is updated in memory "is erased students with ID =" 2 "" But in the database is not updated, I'm reading the documentation and should work with update datosAlumnos.Update(ds, "alumnos")

Imports MySql.Data.MySqlClient
    Public Class Form1
        Dim con As New MySqlConnection
        Dim stringCon As String = "server=localhost; user id=root; password=; database=centroeducativo"
        Dim listViewAlumnos As New ListBox()

        Dim ds As New DataSet()
        Private Sub Form1_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
            Try
                con.ConnectionString = stringCon
                con.Open()
                Dim datosTablas As New MySqlDataAdapter("SHOW TABLES", con)
                Dim datosAlumnos As New MySqlDataAdapter("SELECT * FROM alumnos ORDER BY Nombre", con)
                Dim datosAsignaturas As New MySqlDataAdapter("SELECT * FROM asignaturas", con)
                Dim datosMatriculas As New MySqlDataAdapter("SELECT * FROM matriculas", con)

                datosTablas.Fill(ds, "tablas")
                datosAlumnos.Fill(ds, "alumnos")
                datosAsignaturas.Fill(ds, "asignaturas")
                datosMatriculas.Fill(ds, "matriculas")

                con.Close()

                Dim tabla As DataTable
                tabla = ds.Tables("tablas")
                Dim fila As DataRow
                Me.ListBox1.Items.Clear()
                For Each fila In tabla.Rows

                    Me.ListBox1.Items.Add(fila.Item("Tables_in_centroeducativo"))
                Next
                Dim filaBorrada As DataRow() = ds.Tables("alumnos").Select("id=2")
                filaBorrada(0).Delete()
                datosAlumnos.Update(ds, "alumnos")
            Catch ex As Exception

            End Try
        End Sub


    Private Sub formularioTabla(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim curItem As String = ListBox1.SelectedItem.ToString()
        Select Case curItem
            Case "alumnos"
                FormularioAlumno()
            Case "asignaturas"
                FormularioAsignaturas()
            Case "matriculas"
                FormularioMatriculas()
            Case Else
                MsgBox("none")
        End Select
    End Sub

    Private Sub FormularioAlumno()
        Panel1.Controls.Clear()
        Dim dv As DataView = ds.Tables("alumnos").DefaultView
        con.Close()
        Dim DataGridView As New DataGridView()
        Panel1.Controls.Add(DataGridView)
        DataGridView.AutoSize = True
        DataGridView.DataSource = dv
        DataGridView.Columns("id").Visible = False
    End Sub
End Class

解决方案

It seems you forget to set InsertCommand, UpdateCommand and specially Deletecommand.

To make a data adapter update data, it should have those commands. You can set those commands manually or using a MySqlCommandBuilder.

Dim myConn As New MySqlConnection("Connection String")
Dim myDataAdapter As New MySqlDataAdapter()
myDataAdapter.SelectCommand = New MySqlCommand("Select Query", myConn)
Dim myCommandBuilder As MySqlCommandBuilder = New MySqlCommandBuilder(myDataAdapter)

这篇关于Mysql DataAdapter更新方法 - 不保存更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆