hab*_*o95 2 .net c# oledb ado.net
我在下面的代码中的con.close()处在Visual Studio中收到"无法访问代码检测到"消息.你能发现我做错了什么吗?
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();
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*off 28
返回1或0时退出该函数(当您返回任何内容时,退出,但在您的情况下为1或0 ); 所以没有办法con.Close()可以调用.
在您发布的代码中,您保证返回,因为您在if语句的两个分支中都有return语句.如果只有一个分支有一个return语句, con.Close()仍然可以到达.
但是你不应该使用Close那种方式 - 你应该使用using语句.
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
}
Run Code Online (Sandbox Code Playgroud)
你的代码可能是这样的:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8059 次 |
| 最近记录: |