0

これに関する SQL は、SQL クライアントに入力するとうまく機能します。ただし、csharp でプログラムによってこれを実行しようとすると、データが返されません。データは follows_fb_threads テーブルに追加されますが、データ リーダーから読み込もうとするとエラーが発生します。私のデータがnullであることを教えてくれます。

        SqlDataReader dr;

        using (cmd = new SqlCommand("INSERT INTO followups_fb_threads (thread_id, thread_time, sender_name, sender_fb_id, sender_location) VALUES (@thread_id, @thread_time, @sender_name, @sender_fb_id, @sender_location); SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];", con)) ;

        cmd.Parameters.Add(new SqlParameter("thread_id", thread_id));
        cmd.Parameters.Add(new SqlParameter("thread_time", thread_time));
        cmd.Parameters.Add(new SqlParameter("sender_name", sender_name));
        cmd.Parameters.Add(new SqlParameter("sender_fb_id", master_sender_fb_id));
        cmd.Parameters.Add(new SqlParameter("sender_location", sender_location));
        dr = cmd.ExecuteReader();


        string type_id = dr[0].ToString();  // YOU SHOULD HAVE DATA BUT IS NULL? WTH?
4

3 に答える 3

2

string type_id = cmd.ExecuteScalar().ToString();すぐに割り当てて、SQLDataReader オブジェクトの使用を避けることもできます。

于 2012-10-01T00:23:37.250 に答える
2

シュート。私はこれを理解しました。必要です。dr.Read(); ごめん!

于 2012-10-01T00:11:59.963 に答える
2

Readデータ リーダーに何かがある前に呼び出す必要があります。

dr.Read();

また、挿入によって結果が生成される場合があります。その場合、ID を取得する前に次の結果に進む必要があります。

dr.NextResult();
dr.Read();
于 2012-10-01T00:14:10.507 に答える