C# 正确的使用方法;使用;在我的密码上

C# 正确的使用方法;使用;在我的密码上,c#,using,C#,Using,我只是想知道我在CRUDStudentTable()中使用“using”的方法是否正确 如果这是不正确的,请给我一个建议,如何做到这一点的权利。多谢各位 我在这里介绍了另一种方法,每当“message”不为null时,它都会返回该“message”。这是一种“皮带和吊杆”方法:您应该使用或finally,但不能同时使用这两种方法 使用块保证关闭所有代码路径中的连接,包括有异常的代码路径。因此,您可以按如下方式重写代码: public void CRUDStudentTable() {

我只是想知道我在CRUDStudentTable()中使用“using”的方法是否正确

如果这是不正确的,请给我一个建议,如何做到这一点的权利。多谢各位

我在这里介绍了另一种方法,每当“message”不为null时,它都会返回该“message”。

这是一种“皮带和吊杆”方法:您应该使用
finally
,但不能同时使用这两种方法

使用
块保证关闭所有代码路径中的连接,包括有异常的代码路径。因此,您可以按如下方式重写代码:

public void CRUDStudentTable()
{
        using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Microsoft User\Desktop\Student.accdb"))
        {
            try
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(Query, conn))
                {
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                message = exception.Message;
                // Consider re-throwing the exception here
                // to let callers know what happened.
                // Silently harvesting the message and continuing
                // is not a good practice of handling exceptions.
            }
        }
}

去掉整个
try
块。我使用try块来捕获错误。可能还值得一提的是
catch(Exception Exception){message=Exception.message;}
将被视为错误practice@zerkms不一定,,这完全取决于
消息发生的情况。我在
WCF
的情况下也做过类似的事情,如果允许异常冒泡,那么当我有其他方法报告错误而不导致频道出错时,就会导致
WCF
频道出错。@Scott Chamberlain:我没有建议它冒泡到最高层并得到未处理的异常,但它不应该在不返回false的情况下,将异常消息静默地写入对象的属性中或类似的东西来表示它failed@user3026391:您如何知道是否发生了错误?您的方法返回
void
,您如何知道查询执行的结果?@zerkms我编辑了我的帖子。它显示了我对“信息”的处理。如果我也做错了,请纠正我。
public void CRUDStudentTable()
{
        using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Microsoft User\Desktop\Student.accdb"))
        {
            try
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(Query, conn))
                {
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                message = exception.Message;
                // Consider re-throwing the exception here
                // to let callers know what happened.
                // Silently harvesting the message and continuing
                // is not a good practice of handling exceptions.
            }
        }
}