为什么会出现错误消息“InvalidOperationException”

时间:2012-12-19 06:17:05

标签: c# invalidoperationexception

我的代码如下:

namespace EntityDAO
{
   public static class StudentDAO
    {
       public static Boolean AddStudent(StudentDTO oDto)
       {
           string str =System.Configuration.ConfigurationManager.AppSettings["myconn"];
           SqlConnection oconnection = new SqlConnection(str);

           oconnection.Open();

           try
           {
               string addstring = "insert into STUDENT(ID,NAME)values('"
               + oDto.ID + "','"
               + oDto.NAME + "')";
               SqlCommand ocommand = new SqlCommand(addstring,oconnection);
               ocommand.ExecuteNonQuery();
               return true;
           }
           catch
           {
               return false;
           }
           finally
           {
               oconnection.Close();
           }

但是当我运行此程序时,出现了一条错误消息,oconnection.Open();的错误消息和消息为'InvalidOperationException'(Instance failure)。我已多次尝试解决此问题,但我没有克服这个问题。所以,任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

以下内容并非建议作为您问题的完整解决方案,但应该帮助您解决问题:

namespace EntityDAO
{
    public static class StudentDAO
    {
        public static Boolean AddStudent(StudentDTO oDto)
        {
            var str = ConfigurationManager.AppSettings["myconn"];
            using (var oconnection = new SqlConnection(str))
            {
                oconnection.Open();

                try
                {
                    var addstring = string.Format(
                        "insert into STUDENT(ID,NAME)values('{0}','{1}')", oDto.ID, oDto.NAME);
                    using (var ocommand = new SqlCommand(addstring, oconnection))
                    {
                        ocommand.ExecuteNonQuery();
                    }
                    return true;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.ToString());
                    return false;
                }
            }
        }
    }
}

不要隐藏自己的异常。即使此代码的调用者想要true或false,也要确保记录异常的详细信息。

另外,AYK所说的SQL注入。我输入的是CW,所以如果有人比我有更多的时间,他们应该随时编辑以使用参数。