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

标签: Asp.net SQLServer C#
发布时间: 2017/2/25 3:56:39
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我需要能够获取我图像上载表,插入的行的 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 查询,插入新闻项目,与正确 pic id。

解决方法 1:

第一件事首先,您需要使用存储过程而不是只写您应用程序内的 SQL 语句。

第二个你想要什么是运行 SCOPE_IDENTITY 作为像你插入语句的一部分

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

  SELECT  SCOPE_IDENTITY() 

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

var result = cmd.ExecuteScalar();
赞助商