0

我想将下面的 C# 代码从普通 SQL 更改为存储过程,但它总是在它们所在的列上显示错误Invalid Column。存储过程有什么问题?

CREATE PROCEDURE [dbo].[usp_AdminRegPage1]
     (@VendorId VARCHAR)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT WorksPackage,MajorWorks FROM dbo.RegPage1 WHERE Vendor_Id = @VendorId;
END

protected void DisplayRecord()
{
     SqlConnection SqlCon = new SqlConnection(GetConnectionString());
     string sql = "SELECT WorksPackage,MajorWorks from RegPage1 
                                                 WHERE Vendor_ID='"+lblPage1ID.Text+"'";
     var da = new SqlDataAdapter(sql, SqlCon);
     var ds = new DataSet();

     da.Fill(ds);

     if (ds.Tables[0].Rows.Count > 0)
     {
        txtMajorPackages.Text = ds.Tables[0].Rows[0]["WorksPackage"].ToString();
        txtRegP1Works.Text = ds.Tables[0].Rows[0]["MajorWorks"].ToString();
     }
}
4

1 回答 1

1

像这样的东西应该可以完成这项工作

public void DisplayRecord()
{
    SqlDataReader rdr = null;

    // create and open a connection object
    SqlConnection SqlCon = new SqlConnection(GetConnectionString());

    try
    {

        SqlCon.Open();

        // 1. create a command object identifying
        // the stored procedure
        SqlCommand cmd = new SqlCommand(
            "usp_AdminRegPage1", SqlCon);

        // 2. set the command object so it knows
        // to execute a stored procedure
        cmd.CommandType = CommandType.StoredProcedure;

        // 3. add parameter to command, which
        // will be passed to the stored procedure
        cmd.Parameters.Add(
            new SqlParameter("@VendorId", lblPage1ID.Text));

        // execute the command
        rdr = cmd.ExecuteReader();

        // iterate through results, printing each to console
        while (rdr.Read())
        {
            txtMajorPackages.Text = rdr["WorksPackage"];
            txtRegP1Works.Text = rdr["MajorWorks"];
        }
    }
    catch (Exception ex)
    {

    }
    finally
    {
        SqlCon.Close();
    }
}

示例取自本网站
http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson07.aspx

于 2012-11-18T07:36:35.580 回答