none
重新绑定数据库问题 RRS feed

  • 问题

  •  Private Sub connection()
    
            cmd.Connection = MyConnection
    
            MyConnection.Open()
    
            cmd.CommandText = "select * from log where User_ID='" & Trim(user) & "'"
            Dim adapter As New OleDbDataAdapter(cmd)
            adapter.Fill(dtable)
            DataGridView1.DataSource = dtable
            DataGridView1.Columns("ID").Visible = False
    
            MyConnection.Close()
    
        End Sub
    
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    
            Dim confirm As String
            confirm = MsgBox("Are you sure to clear all records?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm Clear Status")
    
            For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
                If DataGridView1.Rows(i).Selected = True Then
    
                    If confirm = vbYes Then
                        cmd.Connection = MyConnection
                        MyConnection.Open()
    
                        cmd.CommandText = "delete * from log where User_ID='" & (DataGridView1.SelectedRows(i).Cells("User_ID").Value) & "'"
                        Dim adapter As New OleDbDataAdapter(cmd)
                        adapter.Fill(dtable)
                        DataGridView1.DataSource = dtable
    
                        MyConnection.Close()
    
                    Else
                        Exit Sub
                    End If
                End If
            Next
            MsgBox("All records has been successfully cleared.", MsgBoxStyle.Information, "Cleared Successful")
            connection()
        End Sub
    为什么当我删除了全部资料,再重新绑定数据库。但datagridview没有变化??我在form_load运行connection,是没有问题,可以显示资料在datagrdiview。。
    2012年3月28日 1:27

答案

全部回复

  • 请确定在删除所有资料以后必须同步更新数据库,你应该调用ExecuteNonQuery()——

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim confirm As String confirm = MsgBox("Are you sure to clear all records?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm Clear Status") Using cmd As SqlCommand("truncate table xxx",new SqlConnection("你的路径"))

    cmd.Connection.Open()
    cmd.ExecuteNonQuery();

    '此处自己重新绑定,注意改变cmd.CommandText,配合SqlDataAdapter一起使用;其实数据全部清除了,
    '直接把DataGridView的DataSource=Nothing也可。

    End Using End Sub


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月28日 2:08
    版主
  • 请确定在删除所有资料以后必须同步更新数据库,你应该调用ExecuteNonQuery()——

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim confirm As String confirm = MsgBox("Are you sure to clear all records?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm Clear Status") Using cmd As SqlCommand("truncate table xxx",new SqlConnection("你的路径"))

    cmd.Connection.Open()
    cmd.ExecuteNonQuery();

    '此处自己重新绑定,注意改变cmd.CommandText,配合SqlDataAdapter一起使用;其实数据全部清除了,
    '直接把DataGridView的DataSource=Nothing也可。

    End Using End Sub


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处


    cmd.ExecuteNonQuery();是不是每一次删除都要写??如果update,insert和select 也要用吗??
    2012年3月28日 2:26
  • cmd.ExecuteNonQuery();是不是每一次删除都要写??如果update,insert和select 也要用吗??

    准确来说,你每一次需要执行一次SQL命令的时候需要显示调用。ExecuteNonQuery在执行Insert,Delete和Update语句时候需要。你看我的代码,truncate语句是删除所有数据内容,自然需要执行此语句。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月28日 2:47
    版主
  • cmd.ExecuteNonQuery();是不是每一次删除都要写??如果update,insert和select 也要用吗??

    准确来说,你每一次需要执行一次SQL命令的时候需要显示调用。ExecuteNonQuery在执行Insert,Delete和Update语句时候需要。你看我的代码,truncate语句是删除所有数据内容,自然需要执行此语句。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处


    cmd.CommandText = "delete * from log where User_ID='" & Trim(user) & "'"
                        Dim adapter As New OleDbDataAdapter(cmd)
                        adapter.Fill(dtable)
                        cmd.ExecuteNonQuery()
                        cmd.CommandText = "select * from log where User_ID='" & Trim(user) & "'"
                        adapter.Fill(dtable)
                        DataGridView1.DataSource = dtable
                        MyConnection.Close()

    我重新绑定,但还是没有变化??
    2012年3月29日 4:06
  • 你是SQL数据库吧?SQL的话你语法是不是错了?应该是delete from……而不是delete * from……

    cmd.CommandText = "delete from [log] where User_ID='" & Trim(user) & "'"

    另外请把以下两句话删除(上面一段代码)

    Dim adapter As New OleDbDataAdapter(cmd)
    adapter.Fill(dtable)

    还是不行,请仍旧参考我先前的代码。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月29日 4:46
    版主
  • 你是SQL数据库吧?SQL的话你语法是不是错了?应该是delete from……而不是delete * from……

    cmd.CommandText = "delete from [log] where User_ID='" & Trim(user) & "'"

    另外请把以下两句话删除(上面一段代码)

    Dim adapter As New OleDbDataAdapter(cmd)
    adapter.Fill(dtable)

    还是不行,请仍旧参考我先前的代码。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处


    我添加dtable.clear就可以了。。。谢谢您的帮忙。。。
    2012年3月29日 5:42
  • 那这个你只是清除了你的内存数据表啊DataTable,不是真实的数据库的数据表;如果要还是要Delete或者我的truncate方法的。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年3月29日 5:45
    版主