使用ASP.net和c#的存储过程从SQL Server检索数据

本文关键字:SQL Server 检索 数据 存储过程 ASP net 使用 | 更新日期: 2023-09-27 18:05:58

我有一个表单,我想从sql表中检索数据,并根据我在url中输入的?id在表单的字段中显示它,但我总是得到这个错误:

过程或函数'GetAppForm'期望参数'@id',这是没有提供。

注意:GetAppForm为存储过程。

这是我的代码,请帮助我:

try
{
    if (String.IsNullOrEmpty(Request.QueryString["id"]))
    {
        sqlConn.Open();
        using (SqlCommand cmd = new SqlCommand("GetAppForm", sqlConn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter id = cmd.Parameters.Add("@id", SqlDbType.Int);                    
            id.Direction = ParameterDirection.Input;
            id.Value = Request.QueryString["id"];
            SqlDataReader dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            while (dataReader.Read())
            {
                OwnerField.Text = dataReader["Owner"].ToString();
                OdBookNoField.Text = dataReader["OD"].ToString();
                PdLocField.Text = dataReader["pd"].ToString();
                StatementNoField.Text = dataReader["Statmnt"].ToString();
                ApplicationNoField.Text = dataReader["AppNo"].ToString();
                AppDateField.Text = dataReader["AppDate"].ToString();
                areaField.Text = dataReader["Area"].ToString();
                areaNoField.Text = dataReader["AreaNo"].ToString();
                blockNoField.Text = dataReader["BlockNo"].ToString();
                streetNoField.Text = dataReader["StreetNo"].ToString();
            }
        }
    }
}
catch (Exception ex)
{
    HttpContext.Current.Response.Write("No Connection!!");
}
finally
{
    sqlConn.Close();
}

使用ASP.net和c#的存储过程从SQL Server检索数据

变化

if (String.IsNullOrEmpty(Request.QueryString["id"]))

if (!String.IsNullOrEmpty(Request.QueryString["id"]))

我想你只是忘了否定String.IsNullOrEmpty条件:

 try
        {
            if (!String.IsNullOrEmpty(Request.QueryString["id"]))
            {

请注意,你的代码容易被注入。

try
            {
                if (!String.IsNullOrEmpty(Request.QueryString["id"]))
                {
                    sqlConn.Open();
                    using (SqlCommand cmd = new SqlCommand("GetAppForm", sqlConn))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);                       
                        SqlDataReader dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                        //SqlDataReader dataReader = cmd.ExecuteReader(CommandBehavior.SingleRow);
                        while (dataReader.Read())
                        {
                            OwnerField.Text = dataReader["Owner"].ToString();
                            OdBookNoField.Text = dataReader["OD"].ToString();
                            PdLocField.Text = dataReader["pd"].ToString();
                            StatementNoField.Text = dataReader["Statmnt"].ToString();
                            ApplicationNoField.Text = dataReader["AppNo"].ToString();
                            AppDateField.Text = dataReader["AppDate"].ToString();
                            areaField.Text = dataReader["Area"].ToString();
                            areaNoField.Text = dataReader["AreaNo"].ToString();
                            blockNoField.Text = dataReader["BlockNo"].ToString();
                            streetNoField.Text = dataReader["StreetNo"].ToString();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                HttpContext.Current.Response.Write("No Connection!!");
            }
            finally
            {
                sqlConn.Close();
            }