我在数据库中插入一个新行,并同时获取新插入行的自动id,结果出现 指定的转换无效
源代码:
string strSQL = "insert into tbgarden(name,districtid,categoryid,memberid,contactmain,contactother,qq,address,description) values(@name,@districtid,@categoryid,@memberid,@contactmain,@contactother,@qq,@address,@description) select @@IDENTITY";.............
............
int id=0;
using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                cmd.Connection = conn;
                SqlDataReader sdr = cmd.ExecuteReader();
                if (sdr.Read())
                {
                    id = sdr.GetInt32(0);  // 问题出现在这句 
                }
            }不知道是何原因?请指教。

解决方案 »

  1.   

    确定sdr取出 的第一个字段是id?
      

  2.   

    id = sdr.GetInt32(1);试试 
      

  3.   

    //****你存储过程里面,需要加一个out字段哈.//****便如@NewID float out ;select @@IDENTITY=@NewID
    //*****然后在前台获取@NewID字段哈.
      

  4.   

    select @@IDENTITY AS NewID
    id = sdr.GetInt32("NewID");试试 
      

  5.   

    id = sdr.GetInt32("NewID");
    楼主可以试下.
      

  6.   

    int num=Convert.ToInt32(cmd.ExecuteScalar().ToString())
      

  7.   


    id = sdr.GetValue(0);  //@@identify 不是int类型