[英]Input string was not in a correct format
我有一堆代碼。 當我添加詳細信息時,我不知道為什么我會因為輸入字符串的格式不正確而出錯。
在這條線
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);
}
請建議我要去哪里錯了。
在這兩行中,您說的是Integers,但是第一行嘗試分配對象值,第二行嘗試分配字符串值。 那里需要固定一些東西
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;
首先,似乎您使用了兩個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
指令之前打開連接是一個好習慣,尤其是當您向數據庫發送多個命令時。
第三,必須正確使用值類型。 在使用整數的情況下,將整數值分配給參數。
我已經為您編輯了代碼。
我希望這回答了你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.