【问题标题】:Stored Procedure returns a 0 only when on the server - not when run locally存储过程仅在服务器上返回 0 - 而不是在本地运行时
【发布时间】:2017-05-10 09:36:14
【问题描述】:

我有以下代码从数据库中返回一个 ID 号。当我在本地运行它时它工作正常,但是当我将文件放到服务器上时,虽然它确实将数据记录到数据库中,但它只返回一个 0 而不是 ID 号。

HHID 是当我将信息记录到数据库时自动递增的 ID。

SqlConnection conn = new SqlConnection("DB connection stuff");
SqlCommand cmd = conn.CreateCommand();
SqlDataReader reader;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "insert_workshop_requests";
cmd.Parameters.AddWithValue("@HHID", 1);
cmd.Parameters.AddWithValue("@username", usernameData.Text);
cmd.Parameters.AddWithValue("@name", nameData.Text);
cmd.Parameters.AddWithValue("@email", emailData.Text);

cmd.Parameters["@HHID"].Direction = System.Data.ParameterDirection.Output;

try
{
    conn.Open();
    reader = cmd.ExecuteReader();
    HHID = System.Convert.ToInt32(cmd.Parameters["@HHID"].Value);
}
catch (Exception exc)
{

}
finally
{
    if (conn.State != ConnectionState.Closed)
        conn.Close();
}

这快把我逼疯了!希望有人能提供帮助,因为虽然我发现了大量关于存储 0 而不是 ID 的 SP 的有用文章,但问题总是在本地运行时。我在本地工作使得调试变得非常困难!

谢谢!

【问题讨论】:

  • 能分享一下SP的代码吗?
  • 你的存储过程是什么样的?你如何检查它返回 0 而不是你想要的 ID 号?
  • @hlh3406 另外,我认为你应该使用 ExecuteNonQuery
  • “本地”是指应用程序和数据库都是本地的吗?如果是这样,我认为您的存储过程在服务器上是不同的,并且没有设置输出变量。

标签: c# sql-server stored-procedures webforms


【解决方案1】:

您正在将 ExecuteReader 用于不是 SELECT 的内容。这对返回参数有一个有趣的副作用。在您关闭阅读器之前,Direction = Output 参数内部的值不可用。

SQL OUTPUT Stored Procedures not working with ExecuteReader

所以您可以关闭阅读器,但实际上您应该使用 ExecuteNonQuery 进行 INSERT/UPDATE/DELETE 查询

conn.Open();
reader = cmd.ExecuteReader();
reader.Close();
HHID = System.Convert.ToInt32(cmd.Parameters["@HHID"].Value);

或更好

conn.Open();
int records = cmd.ExecuteNonQuery();
HHID = System.Convert.ToInt32(cmd.Parameters["@HHID"].Value);

【讨论】:

  • 这修复了它!谢谢!
【解决方案2】:

据我所知,您正在尝试返回最后一个条目的 id, 为此,您可以使用它并将结果绑定到变量并返回它

SELECT SCOPE_IDENTITY()

我希望这会成功

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    相关资源
    最近更新 更多