输入字符串的格式不正确

时间:2015-01-23 14:00:40

标签: c# asp.net

我有一堆代码。当我添加细节时,我不知道为什么我收到错误输入字符串的格式不正确。

在这一行

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);
            }

请建议我出错的地方。

2 个答案:

答案 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指令之前打开连接是一个好习惯,特别是当你向数据库发送多个命令时。

第三,您必须正确使用值类型。在使用整数的位置,为参数指定整数值。

我已经为你编辑了代码。

我希望这能回答你的问题。