Datareader不读取唯一标识的返回值

时间:2012-10-01 00:09:35

标签: c# asp.net sql

当我输入SQL客户端时,SQL上的SQL工作得很漂亮。但是,当我尝试在csharp中以编程方式执行此操作时,不会返回任何数据。数据被添加到follows_fb_threads表中,但是当我尝试从数据读取器读取时会出现错误。它告诉我我的数据是空的。

        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?

3 个答案:

答案 0 :(得分:2)

拍摄。我想通了。需要。 dr.Read();遗憾!

答案 1 :(得分:2)

在数据阅读器中有任何内容之前,您必须致电Read

dr.Read();

此外,插入可能会产生结果,在这种情况下,您必须先获取下一个结果才能获得身份:

dr.NextResult();
dr.Read();

答案 2 :(得分:2)

你也可以string type_id = cmd.ExecuteScalar().ToString();立即分配并避免使用SQLDataReader对象。