【发布时间】: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