首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测到无法访问的代码

检测到无法访问的代码
EN

Stack Overflow用户
提问于 2010-05-25 00:59:44
回答 11查看 9.4K关注 0票数 2

在Visual Studio中,我在下面代码中的con.close()点上收到了一条“检测到无法访问的代码”的消息。你能发现我做错了什么吗?

代码语言:javascript
运行
复制
private int chek1(String insert)
{
    OleDbConnection con = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\\sdb.mdb");
    OleDbCommand com = new OleDbCommand("select count(*) from sn where sn='" + insert + "\'", con);           
    con.Open();

    int po = (int)com.ExecuteScalar();           
    if (po > 0)
        return 1;
    else
        return 0;
    con.Close();    
}
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-05-25 01:06:38

您的代码可能如下所示:

代码语言:javascript
运行
复制
private int check(string sn)
{
    using (OleDbConnection connection = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\\sdb.mdb"))
    using (OleDbCommand command = connection.CreateCommand())          
    {
        command.CommandText = "SELECT COUNT(*) FROM sn WHERE sn=?";
        command.Parameters.Add("@sn", sn));
        con.Open();               
        return ((int)com.ExecuteScalar() > 0) ? 1 : 0;
    }
}
票数 7
EN

Stack Overflow用户

发布于 2010-05-25 01:00:50

函数在返回1或0时退出(返回任何值,本例中只返回1或0);因此无法调用con.Close()

在您发布的代码中,您肯定会返回,因为在if语句的两个分支中都有一个return语句。如果只有一个分支有返回语句,仍然可以访问con.Close()

但是无论如何您都不应该以这种方式使用Close --您应该使用using语句。

代码语言:javascript
运行
复制
using (OleDbConnection con = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\\sdb.mdb"))
using (OleDbCommand com = new OleDbCommand("select count(*) from sn where sn='" + insert + "\'", con))
{
    con.Open();

    int po = (int)com.ExecuteScalar();           
    if (po > 0)
        return 1;
    else
        return 0;

    // con.Close and con.Dispose will be called automatically at the end of the using block
}      
票数 28
EN

Stack Overflow用户

发布于 2010-05-25 01:01:19

上面有一个总是会触发returnif / else

代码语言:javascript
运行
复制
    if (po > 0)
        return 1;
    else
        return 0;

因此,在这段代码之后,任何代码都不可能执行。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2898694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档