我在Conn的最后一行收到错误,说“检测到无法访问的代码”

时间:2014-02-27 11:21:34

标签: c# asp.net

我在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();
}

4 个答案:

答案 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;