我有一堆代码。当我添加细节时,我不知道为什么我收到错误输入字符串的格式不正确。
在这一行
cmd1.ExecuteNonQuery();
请参阅代码供您参考: -
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionString);
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
SqlCommand cmd1 = new SqlCommand("Insert into tbl_expense_category (NgoId,expense_category_name,expense_category_description,active) values(@NgoId,@expense_category_name, @expense_category_description,@active)", conn);
cmd1.Parameters.Add("@NgoId", SqlDbType.Int).Value = ddlNgoName.SelectedValue;
cmd1.Parameters.Add("@expense_category_name", SqlDbType.Int).Value = txtExpenseCat.Text;
cmd1.Parameters.Add("@expense_category_description", SqlDbType.NVarChar).Value = txtEspenseDesc.Text;
cmd1.Parameters.Add("@active", SqlDbType.Bit).Value = chkActive.Checked;
cmd1.ExecuteNonQuery();
conn.Close();
ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Expenses added sucessfully');window.location ='csrexpensecategorylist.aspx';", true);
}
请建议我出错的地方。
答案 0 :(得分:1)
在这两行中,您说您的参数是整数,但第一行尝试分配对象值,第二行尝试分配字符串值。需要修复的东西
cmd1.Parameters.Add("@NgoId", SqlDbType.Int).Value =
ddlNgoName.SelectedValue;
cmd1.Parameters.Add("@expense_category_name", SqlDbType.Int).Value =
txtExpenseCat.Text;
例如,考虑到字段名称
,这些似乎更合适cmd1.Parameters.Add("@NgoId", SqlDbType.Int).Value =
Convert.ToInt32(ddlNgoName.SelectedValue);
cmd1.Parameters.Add("@expense_category_name", SqlDbType.NVarChar, 255).Value =
txtExpenseCat.Text;
答案 1 :(得分:0)
首先,您似乎使用了两个SqlCommand
。你们两个都不需要它们;尝试使用一个,像这样:
conn.Open();
using (SqlCommand command = new SqlCommand(
"Insert into tbl_expense_category (NgoId, expense_category_name, expense_category_description, active) values (@NgoId, @expense_category_name, @expense_category_description, @active)",
conn))
{
command.Parameters.Add("@NgoId", SqlDbType.Int).Value = Convert.ToInt32(ddlNgoName.SelectedValue);
command.Parameters.Add("@expense_category_name", SqlDbType.Int).Value = Convert.ToInt32(txtExpenseCat.Text);
command.Parameters.Add("@expense_category_description", SqlDbType.NVarChar).Value = txtEspenseDesc.Text;
command.Parameters.Add("@active", SqlDbType.Bit).Value = chkActive.Checked;
command.ExecuteNonQuery();
}
conn.Close();
其次,你必须知道在using
指令之前打开连接是一个好习惯,特别是当你向数据库发送多个命令时。
第三,您必须正确使用值类型。在使用整数的位置,为参数指定整数值。
我已经为你编辑了代码。
我希望这能回答你的问题。