按钮点击时我有一个代码。当我运行此代码时,我收到错误
参数化查询'(@ CatName nvarchar(9),@ Parent_Id int)插入到tbl_Category(Ca'期望参数' @ Parent_Id',这是 没提供。
我的逻辑是
如果我选择下拉列表的值并添加文本然后单击提交按钮,则文本框值将成为下拉列表中所选值的子值。请参阅代码: -
protected void btnSubmit_Click(object sender, EventArgs e)
{
string ParentId = null;
if (ddlCategory.SelectedIndex != 0)
{
ParentId = ddlCategory.SelectedValue;
}
string query = "Insert into tbl_Category(CatName,Parent_Id) values (@CatName,@Parent_Id)";
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultSQLConnectionString"].ConnectionString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.Add("@CatName", SqlDbType.NVarChar).Value = txtAddCategories.Text;
command.Parameters.Add("@Parent_Id", SqlDbType.Int).Value = (ParentId != null ? ParentId : null);
connection.Open();
command.ExecuteNonQuery();
}
}
}
请告诉我错误在哪里?
答案 0 :(得分:3)
通过DBNull.Value
代替null
并传递正确的类型(int
而不是string
):
object pID = DBNull.Value;
if(ParentID != null) pID = int.Parse(ParentId);
command.Parameters.Add("@Parent_Id", SqlDbType.Int).Value = pID;
因为有一些混乱(见评论和聊天),这里是完整的代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string ParentId = null;
if (ddlCategory.SelectedIndex != 0)
{
ParentId = ddlCategory.SelectedValue;
}
string query = "Insert into tbl_Category(CatName,Parent_Id) values (@CatName,@Parent_Id)";
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultSQLConnectionString"].ConnectionString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.Add("@CatName", SqlDbType.NVarChar).Value = txtAddCategories.Text;
object pID = DBNull.Value;
if(ParentID != null) pID = int.Parse(ParentId);
command.Parameters.Add("@Parent_Id", SqlDbType.Int).Value = pID;
connection.Open();
command.ExecuteNonQuery();
}
}
}
答案 1 :(得分:1)
更改您的代码如下: -
command.Parameters.Add("@Parent_Id", SqlDbType.Int).Value = ParentId ?? DBNull.Value;
代码中的问题是ternary operator
无法确定返回类型,因为您要么返回int
值或null
值,这显然是不兼容的。因此,您可以使用Null Coalesce
运算符。