插入后,再用Select来得到记录号

解决方案 »

  1.   

    对应的表中的记录要设置其ID字段的Identity 属性为Yes.
    假设表 table1 (id, name), 其中id为Identity字段。string strSql = "Insert Into table1 (name) values ('spring'); select @@identity;";SqlConnection conn = new SqlConnection("connection string");
    SqlCommand cmd = new SqlCommand(strSql, conn);conn.Open();
    int id = (int)cmd.ExecuteScalar();  //返回的新记录的值conn.close();
      

  2.   

    上面程序我感觉不是记录号,
    可以如下Insert Into table1 (name) values ('windyyang'); Select count(*) from table1;SqlConnection conn = new SqlConnection("connection string");
    SqlCommand cmd = new SqlCommand(strSql, conn);conn.Open();
    int id = (int)cmd.ExecuteScalar();  //返回的新记录的记录号conn.close();
      

  3.   

    写错!
    上面程序我感觉不是记录号,
    可以如下
    string strSql = "Insert Into table1 (name) values ('windyyang'); Select count(*) from table1;"SqlConnection conn = new SqlConnection("connection string");
    SqlCommand cmd = new SqlCommand(strSql, conn);conn.Open();
    int id = (int)cmd.ExecuteScalar();  //返回的新记录的记录号conn.close();
      

  4.   

    using(SqlCommand cmd=new SqlCommand(
    @"
    INSERT.....
    SELECT SCOPE_IDENTITY() AS ID
    ",conn))//SCOPE_IDENTITY()避免并发和触发器所作成的错误。
    {
        id=Convert.ToInt32(cmd.ExecuteScalar());//如果返回Decimal的话,用(int)cmd.ExecuteScalar就会出错..
    }
      

  5.   

    int id = (int)cmd.ExecuteScalar();  //返回的新记录的值
    不行。
    id=Convert.ToInt32(cmd.ExecuteScalar());//如果返回Decimal的话,用(int)
    可以!
    谢谢各位!