【问题标题】:How do i display a select stored procedure result in a textbox?如何在文本框中显示选择的存储过程结果?
【发布时间】:2016-08-26 07:49:45
【问题描述】:

我需要将存储过程中的 select 语句的结果显示到文本框中,但我不知道该怎么做。 select 语句不使用 WHERE 子句。存储过程去

CREATE PROCEDURE NewCustomer
AS
BEGIN
SELECT MAX(ID) + 1 FROM Database
END

这是我尝试过的

protected void btnNew_Click(object sender, EventArgs e)
    {
        Clear();
        int num;

        try
        {
            using (SqlCommand command = new SqlCommand("NewCustomer"))
            {
                command.Connection = conn;
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.Add("@CustID", SqlDbType.Int).Value = Int32.TryParse(txtCID.Text, out num); // Use tryparse if needed
                conn.Open();
                txtCID.Text = (string)command.ExecuteScalar();
            }
        }
        catch (Exception ex)
        {
            lblMessage.Text = ex.Message;
        }

        }

它给了我一个“Procedure NewCID 没有提供参数和参数”。错误

【问题讨论】:

  • 这是展示您的场景的示例程序,还是您真的将其用作程序?
  • 错误出现在哪一行?我猜问题是您将txtCID.Text 分配给SqlDbType.Int 类型参数的Value 属性。
  • @Prdp 我以它为例,但我已经编辑它以显示我实际使用的内容。
  • @OnkelToob 那么我只需要将 txtCID 转换为 Int32 吗?
  • @Anon 是的,这至少是我的第一个猜测。但我看到你已经编辑了你的问题,所以问题似乎已经转移到其他问题上......

标签: c# sql ado.net


【解决方案1】:

您没有执行您指定的程序。该过程被命名为yadayada你能给出的最糟糕的名字)并且你正在执行过程NewCustomer作为命令文本。两者必须相同。然后,您正在使用 Wrong 语句来执行查询。

ExecuteNonQuery 执行目录操作(例如, 查询数据库的结构或创建数据库对象,例如 作为表),或更改数据库中的数据而不使用 通过执行 UPDATE、INSERT 或 DELETE 语句来设置数据集。

但是您正在使用它来执行选择查询。在这里,您从表中选择一个值,因此 ExecuteScalar 将是您的最佳选择。您的代码将是这样的:假设过程名称是GetNewCustomerID

 using (SqlCommand exeCommand = new SqlCommand("GetNewCustomerID"))
 {
     exeCommand.Connection = conn;
     exeCommand.CommandType = CommandType.StoredProcedure;
     exeCommand.Parameters.Add("@CustID",SqlDbType.Int).Value=Convert.ToInt32(txtCID.Text); // Use tryparse if needed
     conn.Open();
     txtCID.Text = (string)exeCommand.ExecuteScalar(); 
 }

【讨论】:

  • 我只是以yadayada为例
  • 我已将示例更新为类似于您的示例,但现在出现了不同的错误。
猜你喜欢
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
  • 2012-07-15
相关资源
最近更新 更多