当前位置: 首页 > 知识库问答 >
问题:

当mysql查询成功执行时,如何使用“try catch finally”块显示消息

曹乐意
2023-03-14

我在C#Windows窗体的代码中使用了“try-catch-finally”来查询MySQL数据库。代码运行良好:当catch块标记错误时,消息框将显示错误消息。

在最后一个块中,我编写了一个消息框,它将显示数据库成功更新的时间。

如果没有错误消息,则一切正常。成功消息显示。

但是如果有错误,就会显示catch块中的错误消息,然后显示finally块中的成功消息。

有人知道一个解决方案,让程序在mysql更新时显示错误消息或成功消息吗?

谢谢,

耗尽

下面是一个代码示例:

私有无效btnUpdateEmployeeTable_Click(对象发送方,事件Args e) //更新员工表中的记录 { 字符串 myConnection = @“服务器=本地主机; 数据库=shopdb; 用户名=**; 密码=**; 转换零日期时间=True”;我的连接 = 空;

        try
        {
            Connect = new MySqlConnection(myConnection);
            Connect.Open(); //Open the connection

            //This is the mysql command that we will query into the db.
            //It uses Prepared statements and the Placeholders for faster, more secure processing.

            String updateQuery = "UPDATE employee SET emp_lName = @empLastName, emp_fName = @empFirstName WHERE emp_number = @empNum";

            MySqlCommand cmdInsertEmployeeToDataBase = new MySqlCommand(updateQuery, Connect);
            cmdInsertEmployeeToDataBase.Prepare();

            //Bind the value to the placeholder               

            cmdInsertEmployeeToDataBase.Parameters.AddWithValue("@empNum", this.txtEmployeeNo.Text);
            cmdInsertEmployeeToDataBase.Parameters.AddWithValue("@empLastName", this.txtEmployeeLastName.Text);
            cmdInsertEmployeeToDataBase.Parameters.AddWithValue("@empFirstName", this.txtEmployeeFirstName.Text);                

            cmdInsertEmployeeToDataBase.ExecuteNonQuery(); //Execute the mysql command 


        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message + "\nDatabase could not be updated \n" + "Please try again");

        }
        finally
        {
            if (Connect != null)
            {
                Connect.Close(); //Close the connection
            }


            MessageBox.Show("Database update successful");


        }
    }

共有1个答案

支嘉祥
2023-03-14

您可以轻松地将成功代码向上移动。如果在MessageBox.Show("数据库更新成功");行之前抛出异常,那么它将永远不会被执行。

     try
     {
        Connect = new MySqlConnection(myConnection);
        Connect.Open(); //Open the connection

        //This is the mysql command that we will query into the db.
        //It uses Prepared statements and the Placeholders for faster, more secure processing.

        String updateQuery = "UPDATE employee SET emp_lName = @empLastName, emp_fName = @empFirstName WHERE emp_number = @empNum";

        MySqlCommand cmdInsertEmployeeToDataBase = new MySqlCommand(updateQuery, Connect);
        cmdInsertEmployeeToDataBase.Prepare();

        //Bind the value to the placeholder               

        cmdInsertEmployeeToDataBase.Parameters.AddWithValue("@empNum", this.txtEmployeeNo.Text);
        cmdInsertEmployeeToDataBase.Parameters.AddWithValue("@empLastName", this.txtEmployeeLastName.Text);
        cmdInsertEmployeeToDataBase.Parameters.AddWithValue("@empFirstName", this.txtEmployeeFirstName.Text);

        cmdInsertEmployeeToDataBase.ExecuteNonQuery(); //Execute the mysql command 

        MessageBox.Show("Database update successful");

     }
     catch (Exception ex)
     {
        MessageBox.Show(ex.Message + "\nDatabase could not be updated \n" + "Please try again");

     }
     finally
     {
        if (Connect != null)
        {
           Connect.Close(); //Close the connection
        }

     }
 类似资料:
  • 问题内容: 是否有任何查询/方式来显示 所有 服务器上执行的最后一个查询? 问题答案: 对于那些拥有MySQL> = 5.1.12的用户,可以在运行时全局控制此选项: 执行 执行 看看桌子 如果您希望输出到文件而不是表: 默认值 。 我更喜欢这种方法来编辑.cnf文件,因为: 您没有编辑文件,并可能永久打开日志记录 您不会在文件系统中四处寻找查询日志-甚至更糟的是,由于需要完美的目的地而分心。 您

  • 问题内容: 除了使用以外,如何检查MySQL查询是否成功 我正在努力实现… 问题答案: 这是手册页中的第一个示例: 如果您想使用其他以外的东西,我建议。

  • 现在,这个问题不是关于MySQL查询、结果行或与数据库本身相关的任何内容,而是关于MySQL Workbench程序。 我在程序中打开了数十个表格(包括更改表格和编辑行/列),并且一次只能在UI中看到大约10个标签,因为它们只有一行。使用左右箭头显示更多标签非常缓慢和烦人。 那么,有没有什么方法可以显示多行标签或者以某种方式增加它们的空间?偏好与它无关,除了字体和搜索网络只会返回毫无意义的东西。

  • 问题内容: 我有两个通过1:1关系连接的实体,例如: 我想创建一个Doctrine查询,在其中我可以根据中某个列的值检索数据。像这样的东西(当然不起作用): 任何帮助将非常感激 :) 问题答案: 左连接在这里也没有意义(因为where子句将使它像内部连接一样工作)

  • 有些函数需要很长时间才能执行。我想让用户用进度条等待。不幸的是,当我运行这个函数时,它只在函数结束时运行,而不是在我想要的时候。让我解释一下,我使用“sendloading()”方法启动进度条,但在测试期间,该进度条仅在处理其他函数“copyAssets”或“createOnClicBtnInsert()”后显示。有人能解释一下原因吗? 这是我的代码: 以下是我的进度条代码:

  • 本文向大家介绍MySql中如何使用 explain 查询 SQL 的执行计划,包括了MySql中如何使用 explain 查询 SQL 的执行计划的使用技巧和注意事项,需要的朋友参考一下 explain命令是查看查询优化器如何决定执行查询的主要方法。 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的。 1、什么是MySQL执行计划