Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 插入行后获取主键时出现InvalidCastException_Asp.net_Sql_Sql Server_Sql Insert - Fatal编程技术网

Asp.net 插入行后获取主键时出现InvalidCastException

Asp.net 插入行后获取主键时出现InvalidCastException,asp.net,sql,sql-server,sql-insert,Asp.net,Sql,Sql Server,Sql Insert,我使用下面的查询插入一行,我得到了插入的行,但我想得到插入返回的主键。行已成功插入,但获取主键给我带来了困难。一切正常,但在lastID=Convert.ToInt32(Id.Value)它表示InvalidCastException。问题“”也与这个问题有关 注意:主键列名是“Id”,它是int类型,我在asp.net中这样做 SqlParameter Id =new SqlParameter("Id" , SqlDbType.Int); Id.Directio

我使用下面的查询插入一行,我得到了插入的行,但我想得到插入返回的主键。行已成功插入,但获取主键给我带来了困难。一切正常,但在
lastID=Convert.ToInt32(Id.Value)它表示InvalidCastException。问题“”也与这个问题有关

注意:主键列名是“Id”,它是int类型,我在asp.net中这样做

        SqlParameter Id =new SqlParameter("Id" , SqlDbType.Int);
        Id.Direction = ParameterDirection.Output;
        //conn.Open();
        //int inserted = 0;
        //int lastID = 0;
       string insertOffer = "INSERT INTO Offers (userId, column1, column2, column3)  
       VALUES (SomeINT, 'abc', 'abc', 'abc');select Id=SCOPE_IDENTITY()";
       int lastID = 0;
       using (SqlConnection conn = new SqlConnection(Connection))
       {
           conn.Open();
           using (SqlCommand comm = new SqlCommand(insertOffer, conn))
           {
               comm.Parameters.Add(Id);
               comm.ExecuteNonQuery();
               lastID = Convert.ToInt32(Id.Value);
           }//end using comm
       }//end using conn

尝试用
select@Id=SCOPE\u IDENTITY()
替换
select@Id=SCOPE\u IDENTITY()
使用
select@Id=SCOPE\u IDENTITY()
代替
select Id=SCOPE\u IDENTITY()
帮助了我,谢谢@Milen