如何使用ExecuteScalar函数和SCOPE_IDENTITY()函数检索插入行的ID

时间:2016-11-25 18:48:02

标签: c# asp.net sql-server

我需要能够获取我的图片上传表的插入行的ID(我可以通过添加新闻查询传递它),这样我就可以INNER JOIN一个新闻项目。< / p>

根据我的研究,我需要使用ExecuteScalar函数和SCOPE_IDENTITY()函数。

有关如何实现这一目标的任何建议将不胜感激。

 protected void btnUpload_Click(object sender, EventArgs e)
 {
     if (FileUpload1.PostedFile != null)
     {
         SqlConnection con = new SqlConnection(strConnString);

         string strQuery = "insert into tblFiles (FileName, FilePath) 
             values(@FileName, @FilePath)"

         SqlCommand cmd = new SqlCommand(strQuery);
         cmd.Parameters.AddWithValue("@FileName", FileName);
         cmd.Parameters.AddWithValue("@FilePath", "/images/admin/news/" + FileName);  
         cmd.CommandType = CommandType.Text;
         cmd.Connection = con;

         try {
             con.Open();
             cmd.ExecuteNonQuery();
         }
         finally {
             con.Close();
             con.Dispose();
         }
     }
 }

获得ID后,我可以使用正确的图片ID执行另一个SQL查询来插入新闻项目。

1 个答案:

答案 0 :(得分:1)

首先,您需要使用存储过程而不是仅在应用程序中编写SQL语句。

第二个你想要的是{/ 1}}作为插入语句的一部分运行,如

SCOPE_IDENTITY

然后将.NET中的执行语句更改为 INSERT INTO tblFiles (FileName, FilePath) VALUE(@FileName, @FilePath); SELECT SCOPE_IDENTITY()

ExecuteScalar