繁体   English   中英

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

[英]How can I retrieve the ID of the inserted row using ExecuteScalar function and the SCOPE_IDENTITY() function

我需要能够得到的ID(这样我就可以再传给它通过添加新闻查询)为我的图片上传表中插入行,这样我就可以INNER JOIN新闻条目它。

根据我的研究,我需要使用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后,我可以执行另一个SQL查询以使用正确的图片ID插入新闻项。

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

其次,您要在插入语句中运行SCOPE_IDENTITY ,例如

  INSERT INTO tblFiles (FileName, FilePath) 
         VALUE(@FileName, @FilePath);

  SELECT  SCOPE_IDENTITY() 

然后将.NET中的执行语句更改为ExecuteScalar

var result = cmd.ExecuteScalar();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM