0

次のように私のコード:

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)。この問題を解決しようと何度も試みましたが、この問題を克服できませんでした。誰か助けてください。

4

1 に答える 1

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 として入力しているので、誰かが私よりも時間に余裕がある場合は、パラメータを使用するように自由に編集してください。

于 2012-12-19T08:59:14.930 に答える