从.bak恢复数据库后,如何在不使用Vb.Net重启应用程序的情况下如何刷新Datagridview?

穆罕默德·朱菲卡·阿里·马布卜

重要编辑

我解决了问题。实际上这不是问题。发生的是,当我调试程序时,在debug文件夹中创建了一个新的.mdf文件,我的Datagridview和应用程序中的其他对象从该文件夹中获取信息。但是我使用的还原查询是将数据库还原到我的解决方案文件夹(主.mdf文件)中,因此,每次完成操作后,都会还原该解决方案文件,并在下次调试时显示该文件,因为它会重新创建.mdf文件。解决方案文件夹中的debug文件夹。因此可以在下次调试时查看。

我创建了一个内置的“备份/还原”应用程序,该应用程序可以成功备份和还原,但是还原成功后,我必须关闭该应用程序,然后再次重新启动以查看更改,但我不想关闭该应用程序希望它在成功还原后立即显示更改,这可能吗?如果是,那怎么办?

表单的屏幕截图: 表单的屏幕截图

当前代码:

Imports Microsoft.SqlServer.Server
Imports MySql.Data.MySqlClient
Imports System.Data.SqlClient

Public Class Test


    Sub Backup()
        With SaveFileDialog1
            .FileName = ""
            .Filter = "Backup File|*.bak"
            SaveFileDialog1.ShowDialog()
            If .FileName = "" Then
                Exit Sub
            Else
                Dim BUDate As New TextBox
                BUDate.Text = "Backup database BISDB To Disk='" + SaveFileDialog1.FileName + "'"
                Dim con As New SqlClient.SqlConnection("data source=.\SQLEXPRESS;initial catalog=BISDB;Integrated Security=True")
                Dim cmd As New SqlCommand()

                Try
                    con.Open()
                    cmd.CommandType = CommandType.Text
                    cmd.CommandText = BUDate.Text
                    cmd.Connection = con
                    cmd.ExecuteNonQuery()
                    MsgBox("Backup successfull!", MsgBoxStyle.OkOnly, "Backup")
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try
            End If
        End With


    End Sub

    Private Sub Test_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.StudentsTableAdapter.Fill(Me.BIS.Students)

    End Sub

    Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
        Backup()
    End Sub

    Private Sub btnRestore_Click(sender As Object, e As EventArgs) Handles btnRestore.Click
        With OpenFileDialog1
            .FileName = ""
            .Filter = "Backup File|*.bak"
            OpenFileDialog1.ShowDialog()
            If .FileName = "" Then
                Exit Sub
            Else
                Dim FileName As String = OpenFileDialog1.FileName
                Dim BUDate As New TextBox
                BUDate.Text = "RESTORE DATABASE BISDB FROM Disk='" + FileName + "'"
                Dim con2 As New SqlClient.SqlConnection("data source=.\SQLEXPRESS;initial catalog=master;Integrated Security=True")
                Dim cmd = New SqlCommand(BUDate.Text, con2)

                Try
                    con2.Open()
                    cmd.ExecuteNonQuery()
                    MsgBox("Restore Successfull!")
                    Me.StudentsTableAdapter.Fill(Me.BIS.Students) '//Edited According to Vignesh Kumar's Answer
                    Me.StudentsBindingSource.ResetBindings(False) '//Edited According to GuidoG's Answer
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Finally
                    con2.Close()
                    con2.Dispose()

                End Try
            End If
        End With
    End Sub

    Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
        'Me.BIS.Reset()
        'Me.StudentsBindingSource.Dispose()
        'Me.StudentsBindingSource.ResetAllowNew()
        Me.StudentsBindingSource.ResetBindings(True)
        Me.StudentsBindingSource.SuspendBinding()
        Me.StudentsBindingSource.ResumeBinding()

        Me.StudentsTableAdapter.Fill(Me.BIS.Students)
    End Sub
End Class

项目名称:

刷新按钮-btnClose

备份按钮-btnCalculate

恢复按钮-btnRestore

Datagridview-DataGridView1

表格-测试

我通过单击“开始”按钮启动应用程序: 在此处输入图片说明

我使用bindingsource填充DataGridView,并且不使用任何代码填充DataGridView,而是Me.StudentsTableAdapter.Fill(Me.BIS.Students)在加载表单时使用。

这是我到目前为止所得到的:

Dim command = New SqlCommand("", con2)
        command.CommandType = CommandType.Text
        Dim adapter As New SqlDataAdapter(command)
        DataGridView1.DataSource = adapter
        adapter.Fill(Me.BIS.Students)
圭多

我想您必须在成功还原后重新填充数据网格。
寻找评论
//
在我的答案中成功恢复后重新填充数据网格

Private Sub
    With OpenFileDialog1
        .FileName = ""
        .Filter = "Backup File|*.bak"
        OpenFileDialog1.ShowDialog()
        If .FileName = "" Then
            Exit Sub
        Else
            Dim FileName As String = OpenFileDialog1.FileName
            Dim BUDate As New TextBox
            BUDate.Text = "RESTORE DATABASE BISDB FROM Disk='" + FileName + "'"
            Dim con2 As New SqlClient.SqlConnection("data source=.\SQLEXPRESS;initial catalog=master;Integrated Security=True")
            Dim cmd = New SqlCommand(BUDate.Text, con2)

            Try
                con2.Open()
                cmd.ExecuteNonQuery()

                // Refill the datagrid after succesfull restore
                Me.StudentsTableAdapter.Fill(Me.BIS.Students)

                MsgBox("Restore Successfull!")

            Catch ex As Exception
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
                con2.Close()
                con2.Dispose()

            End Try
        End If
    End With
    End Sub

编辑:要尝试的事情
在窗体上的任何地方都放了一个按钮,并在其中尝试了以下代码:

yourDataGridView.BindingSource = null
Me.StudentsTableAdapter.Fill(Me.BIS.Students)       
yourDataGridView.BindingSource = Me.StudentsBindingSource
Me.StudentsBindingSource.ResetBindings(False)

编辑:用相同的连接填充命令(对不起,这是在C#中,我不知道Visual Basic)

SqlCommand command = new SqlCommand("your query", con2);
command.CommandType = Command.Text;
SqlAdapter adapter = new SqlDataAdapter(command);
adapter.Fill(Me.BIS.Students);

编辑:用户不同的数据库查询:

SqlCommand command = new SqlCommand("use BISDB " + your query, con2);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不使用 Refresh 和 ReCreate for Android 应用程序的情况下重启应用程序?

来自分类Dev

如何在不使用数据库的情况下在VB.NET的DataGridView中显示数组?

来自分类Dev

如何在不使用数据库的情况下在VB.NET的DataGridView中显示数组?

来自分类Dev

在无需刷新整个应用程序的情况下更新闪亮应用程序中的数据

来自分类Dev

如何在不丢失会话的情况下更新ASP Net Webform或MVC应用程序?

来自分类Dev

如何在不安装Windows的情况下运行.Net应用程序?

来自分类Dev

如何在不使用ComponentScan的情况下启动Spring Boot Web应用程序

来自分类Dev

如何在不使用AppStore的情况下将要测试的应用程序分发给Friends

来自分类Dev

Android开发:如何在不使用应用程序的情况下运行线程

来自分类Dev

如何在不使用表单的情况下从Rails应用程序发布到外部URL

来自分类Dev

如何在不使用Playstore或App Store的情况下升级Flutter应用程序?

来自分类Dev

如何在不使用CLI / Webpack / Node的情况下制作Vue 3.0应用程序

来自分类Dev

应用程序如何在不使用垃圾箱的情况下删除大文件?

来自分类Dev

如何在不使用AppStore的情况下将要测试的应用程序分发给Friends

来自分类Dev

如何在不使用部分唤醒锁的情况下保持应用程序运行

来自分类Dev

如何在不使用 SQLAlchemy 的情况下将 Flask 应用程序部署到 Heroku?

来自分类Dev

在启动后不使用require.js的情况下如何在应用程序中添加模块?

来自分类Dev

在启动后不使用require.js的情况下,如何在应用程序中添加模块?

来自分类Dev

如何在不依赖数据库的情况下启动spring-boot应用程序?

来自分类Dev

如何在不依赖数据库的情况下启动spring-boot应用程序?

来自分类Dev

我的Ruby on Rails应用程序如何在没有密码的情况下访问数据库?

来自分类Dev

如何在不依赖数据库的情况下启动spring-boot应用程序?

来自分类Dev

如何在不冻结应用程序的情况下从WPF DataGrid从ASP.NET WebAPI获取数据?

来自分类Dev

没有应用程序ID的情况下如何访问默认应用程序?

来自分类Dev

如何在不挂起的情况下导航并恢复我的应用程序?

来自分类Dev

如何在不使用多个查询的情况下更新数据库中的数据?

来自分类Dev

如何在不使用localhost的情况下使用Java与MySQL数据库连接

来自分类Dev

如何将数据保存到应用程序 vb.net 中?(不使用数据库或txt文件)

来自分类Dev

如何避免在不使用后台作业的情况下阻止我的应用程序

Related 相关文章

  1. 1

    如何在不使用 Refresh 和 ReCreate for Android 应用程序的情况下重启应用程序?

  2. 2

    如何在不使用数据库的情况下在VB.NET的DataGridView中显示数组?

  3. 3

    如何在不使用数据库的情况下在VB.NET的DataGridView中显示数组?

  4. 4

    在无需刷新整个应用程序的情况下更新闪亮应用程序中的数据

  5. 5

    如何在不丢失会话的情况下更新ASP Net Webform或MVC应用程序?

  6. 6

    如何在不安装Windows的情况下运行.Net应用程序?

  7. 7

    如何在不使用ComponentScan的情况下启动Spring Boot Web应用程序

  8. 8

    如何在不使用AppStore的情况下将要测试的应用程序分发给Friends

  9. 9

    Android开发:如何在不使用应用程序的情况下运行线程

  10. 10

    如何在不使用表单的情况下从Rails应用程序发布到外部URL

  11. 11

    如何在不使用Playstore或App Store的情况下升级Flutter应用程序?

  12. 12

    如何在不使用CLI / Webpack / Node的情况下制作Vue 3.0应用程序

  13. 13

    应用程序如何在不使用垃圾箱的情况下删除大文件?

  14. 14

    如何在不使用AppStore的情况下将要测试的应用程序分发给Friends

  15. 15

    如何在不使用部分唤醒锁的情况下保持应用程序运行

  16. 16

    如何在不使用 SQLAlchemy 的情况下将 Flask 应用程序部署到 Heroku?

  17. 17

    在启动后不使用require.js的情况下如何在应用程序中添加模块?

  18. 18

    在启动后不使用require.js的情况下,如何在应用程序中添加模块?

  19. 19

    如何在不依赖数据库的情况下启动spring-boot应用程序?

  20. 20

    如何在不依赖数据库的情况下启动spring-boot应用程序?

  21. 21

    我的Ruby on Rails应用程序如何在没有密码的情况下访问数据库?

  22. 22

    如何在不依赖数据库的情况下启动spring-boot应用程序?

  23. 23

    如何在不冻结应用程序的情况下从WPF DataGrid从ASP.NET WebAPI获取数据?

  24. 24

    没有应用程序ID的情况下如何访问默认应用程序?

  25. 25

    如何在不挂起的情况下导航并恢复我的应用程序?

  26. 26

    如何在不使用多个查询的情况下更新数据库中的数据?

  27. 27

    如何在不使用localhost的情况下使用Java与MySQL数据库连接

  28. 28

    如何将数据保存到应用程序 vb.net 中?(不使用数据库或txt文件)

  29. 29

    如何避免在不使用后台作业的情况下阻止我的应用程序

热门标签

归档