簡體   English   中英

輸入的字符串格式不正確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM