0

ここで何が間違っているのかわかりません。デバッガーでブレークポイントを設定すると、文字列にはすべて文字列値が含まれますが、それらをテーブルに挿入するときは何も挿入されません。

テーブルは次のように定義されます

CREATE TABLE [dbo].[tblMissEvents] (
[EventID]          INT            IDENTITY (1, 1) NOT NULL,
[EventTime]        NVARCHAR (MAX) NULL,
[MIS_Event_Action] VARCHAR (50)   NULL,
[Bogey_Type]       VARCHAR (50)   NULL,
PRIMARY KEY CLUSTERED ([EventID] ASC)

);

私のコード:

        string date = DateTime.Now.ToString();
        string MISaction = text1.Text;
        string BogeyType = text2.Text;

        try
        {
            con = new SqlConnection();
            con.ConnectionString =
                @"data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\MissileEvents.mdf;integrated security=True;MultipleActiveResultSets=True;Connect Timeout=30";
            con.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText =
                "INSERT into tblMissEvents (EventTime, MIS_Event_Action, Bogey_Type) Values (@date, @MISaction, @BogeyType)";  
            cmd.Parameters.AddWithValue("@date", date);
            cmd.Parameters.AddWithValue("@MISaction", MISaction);
            cmd.Parameters.AddWithValue("@BogeyType", BogeyType);
            cmd.Connection = con;
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        con.Close();

何かご意見は??例外は発生しません。テーブルにエントリがないだけです。

Arshadの編集:

        con = new SqlConnection();
        con.ConnectionString =
            @"data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\MissileEvents.mdf;integrated security=True;MultipleActiveResultSets=True;Connect Timeout=30";
        con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText =
            "INSERT into tblMissEvents (MIS_Event_Action, Bogey_Type) Values (@date, @MISaction, @BogeyType)";  
        cmd.Parameters.AddWithValue("@date", date);
        cmd.Parameters.AddWithValue("@MISaction", MISaction);
        cmd.Parameters.AddWithValue("@BogeyType", BogeyType);
        cmd.Connection = con;
        cmd.ExecuteNonQuery();

更新:: コードは問題ありませんでした。bin\Debug ディレクトリに DB のコピーを作成していて、そこにすべてのデータが移動していました。おそらく、接続文字列の設定に何か問題があります。皆さんありがとう!

4

1 に答える 1

0

次のように null 値を渡すこともできます。

 cmd.CommandText =
            "INSERT into tblMissEvents (EventTime, MIS_Event_Action, Bogey_Type)
                                Values (@eventTime, @MISaction, @BogeyType)";  
        cmd.Parameters.AddWithValue("@eventTime", DBNull.Value);          
        cmd.Parameters.AddWithValue("@MISaction", MISaction);
        cmd.Parameters.AddWithValue("@BogeyType", BogeyType);

更新 1

cmd.CommandText =
        "INSERT into tblMissEvents (EventTime,MIS_Event_Action, Bogey_Type) 
                                Values 
                                   (@date, @MISaction, @BogeyType)"; 

更新 2

int RowUpdated=cmd.ExecuteNonQuery();
MessageBox.Show("Number of row updated"+RowUpdated);
于 2013-04-17T02:11:22.787 に答える