我在Conn的最后一行收到错误,说“检测到无法访问的代码”。为什么呢?
public string insertFileDetails(string insert_osvsrdetails, Hashtable osvsr)
{
Conn = Connect();
SqlCommand cmd = new SqlCommand(insert_osvsrdetails, Conn);
cmd.CommandType = CommandType.StoredProcedure;
//// add out put parameter////
SqlParameter msg = cmd.Parameters.Add("@msg", SqlDbType.VarChar, 50);
msg.Size = 50;
msg.Direction = ParameterDirection.Output;
/////////////// add input parameter///////////
IDictionaryEnumerator myEnumerator = osvsr.GetEnumerator();
while (myEnumerator.MoveNext())
{
cmd.Parameters.AddWithValue("@" + (myEnumerator.Key).ToString(), myEnumerator.Value);
//cmd.Parameters.Add(new SqlParameter("@" + (myEnumerator.Key).ToString(), myEnumerator.Value.ToString().ToUpper()));
}
cmd.ExecuteNonQuery();
strReturn = cmd.Parameters["@msg"].Value.ToString();
return strReturn;
Conn.Close();
}
答案 0 :(得分:0)
你必须在返回之前关闭连接
Conn.Close();
return strReturn;
或者你可以使用try .. finally
try
{
SqlCommand cmd = new SqlCommand(insert_osvsrdetails, Conn);
cmd.CommandType = CommandType.StoredProcedure;
//// add out put parameter////
SqlParameter msg = cmd.Parameters.Add("@msg", SqlDbType.VarChar, 50);
msg.Size = 50;
msg.Direction = ParameterDirection.Output;
/////////////// add input parameter///////////
IDictionaryEnumerator myEnumerator = osvsr.GetEnumerator();
while (myEnumerator.MoveNext())
{
cmd.Parameters.AddWithValue("@" + (myEnumerator.Key).ToString(), myEnumerator.Value);
//cmd.Parameters.Add(new SqlParameter("@" + (myEnumerator.Key).ToString(), myEnumerator.Value.ToString().ToUpper()));
}
cmd.ExecuteNonQuery();
strReturn = cmd.Parameters["@msg"].Value.ToString();
return strReturn;
}
finally
{
Conn.Close();
}
答案 1 :(得分:0)
从方法返回后,无法调用方法。在Conn.Close();
之上移动return strReturn;
以关闭连接,然后返回。
答案 2 :(得分:0)
把这个Conn.Close();返回陈述之前的行
答案 3 :(得分:0)
在返回语句之前关闭连接
Conn.Close();
return strReturn;