我有gridview,我在后端使用存储过程。问题是我没有使用任何文本框或仅标签gridview。
当我运行我的代码时,它显示一个编译错误,spproduct1期望参数@id,这是预期不提供的。 你能否修好错误
public partial class WebForm1 : System.Web.UI.Page
{
string _strsql = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
string cs = ("Data Source=172.16.6.173;Initial Catalog=servion_hari;User ID=sa;Password=Servion@123");
_strsql = "select * from tblproduct where id=@id and Name=@Name and Description=@Description";
SqlConnection con = new SqlConnection(cs);
con.Open();
SqlDataAdapter da = new SqlDataAdapter("spgetproducts1", con);
SqlCommand cmd = new SqlCommand();
SqlParameter id = new SqlParameter("@id", SqlDbType.Int.ToString());
id.Value = GridView1.ToString();
da.SelectCommand.CommandType = CommandType.StoredProcedure;
con.Close();
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
}
答案 0 :(得分:5)
对于存储过程方式:
SqlConnection con = new SqlConnection(cs);
SqlDataAdapter da = new SqlDataAdapter("spgetproducts1", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
//first paramenter: parameter name, second parameter: parameter value of object type
//using this way you can add more parameters
da.SelectCommand.Parameters.AddWithValue("@id", GridView1.ToString());
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
问题;你想用GridView1.ToString()实现什么?
答案 1 :(得分:3)
如果要为查询中定义的参数添加值,可以使用以下命令:
cmd.Parameters.AddWithValue("@id", GridView1.ToString());
更好的实施:
<强>被修改强>
步骤1: 在您的数据库上声明您的存储过程,如下所示:
CREATE PROCEDURE [dbo].[GET_PRODUCTS_SP]
/*Type of this variables should be their column types*/
@id int,
@name varchar(MAX),
@description varchar(MAX)
AS
BEGIN
SELECT * FROM [dbo].[tblproduct]
WHERE id=@id AND
Name=@name AND
Description=@description
END
第2步:像这样调用存储过程:
DataTable dt = new DataTable();
String conStr = "Data Source=172.16.6.173;Initial Catalog=servion_hari;User ID=sa;Password=Servion@123";
SqlConnection con = new SqlConnection(conStr);
SqlCommand com = new SqlCommand("GET_PRODUCTS_SP", con);
com.Parameters.AddWithValue("@id", yourIdValue);
com.Parameters.AddWithValue("@name", yourNameValue);
com.Parameters.AddWithValue("@description", yourDescriptionValue);
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(com);
try
{
con.Open();
da.Fill(dt);
}
catch (Exception)
{
throw;
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
GridView1.DataSource = dt;
GridView1.DataBind();
答案 2 :(得分:0)
你错过了
cmd.Parameters.Add(id);
在执行命令之前添加@id
参数。
答案 3 :(得分:0)
您得到的错误是因为您只是在不将其分配到SqlCommand的情况下声明SqlParameter。
SqlParameter id = new SqlParameter("@id", SqlDbType.Int.ToString());
id.Value = GridView1.ToString();
更改为
cmd.Parameters.Add(new SqlParameter("@id", GridView1.ToString()));
问题:你的GridView1.ToString()是什么?你想分配给什么?
答案 4 :(得分:-4)
::marker
}