未提供以下参数
Following Parameter was not supplied
我有一个按钮点击代码。当我 运行 此代码时,出现错误
The parameterized query '(@CatName nvarchar(9),@Parent_Id int)Insert into tbl_Category(Ca' expects the parameter '@Parent_Id', which was
not supplied.
我的逻辑是
如果我 select 下拉列表的值并添加文本,然后单击提交按钮,文本框值将成为下拉列表中选定值的子值。请看代码:-
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();
}
}
}
请告诉我错误在哪里?
传递 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();
}
}
}
像这样更改您的代码:-
command.Parameters.Add("@Parent_Id", SqlDbType.Int).Value = ParentId ?? DBNull.Value;
您的代码中的问题是 ternary operator
无法确定 return 类型,因为您正在 returning 一个 int
值或 null
值,这显然是不兼容的。因此,您可以改用 Null Coalesce
运算符。
我有一个按钮点击代码。当我 运行 此代码时,出现错误
The parameterized query '(@CatName nvarchar(9),@Parent_Id int)Insert into tbl_Category(Ca' expects the parameter '@Parent_Id', which was not supplied.
我的逻辑是
如果我 select 下拉列表的值并添加文本,然后单击提交按钮,文本框值将成为下拉列表中选定值的子值。请看代码:-
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();
}
}
}
请告诉我错误在哪里?
传递 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();
}
}
}
像这样更改您的代码:-
command.Parameters.Add("@Parent_Id", SqlDbType.Int).Value = ParentId ?? DBNull.Value;
您的代码中的问题是 ternary operator
无法确定 return 类型,因为您正在 returning 一个 int
值或 null
值,这显然是不兼容的。因此,您可以改用 Null Coalesce
运算符。