无法在数据库中插入带逗号的数字

时间:2019-07-16 13:47:42

标签: c# sql-server sql-server-express

我有一个用逗号将数字插入数据库的问题。它仅接受点,但我具有仅适用于逗号的功能,所以有什么办法解决此问题,例如将小数点分隔从点转换为逗号

if (radioButton1.Checked)
        {
            Avance = 200;
        }
        else if (radioButton2.Checked)
        {
            Avance = 0;
        }
        cnx.Open();
        SqlCommand cmd = cnx.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "insert into Employeur values('" + this.txt_ID.Text + "','" + this.txt_Nom.Text + "','" + this.txt_QUA.Text + "','" + this.txt_Salaire.Text + "','" + this.txt_NBRJ.Text + "','" + this.txt_HSUP.Text + "','" + this.txt_SalireHeur.Text + "','" + this.txt_Somme.Text + "','" + this.txt_Dette.Text + "','" + this.Avance + "','" + this.txt_Credit.Text + "','" + this.txt_Montant.Text + "','" + this.txt_Paye.Text + "','" + this.txt_Reste.Text + "')";
        cmd.ExecuteNonQuery();
        cnx.Close();
        MessageBox.Show("Se payement est enregistrer");

2 个答案:

答案 0 :(得分:2)

您非常需要学习如何参数化查询。您还有其他一些问题要解决。这是此查询外观的简化版本。当然,我更希望完全使用存储过程从查询中删除代码。

cmd.CommandText = "insert into Employeur (ID, Nom) values(@txt_ID, @txt_Nom)";
cmd.Parameters.Add("@txt_ID", SqlDbType.VarChar, 30).Value = this.txt_ID.Text;
cmd.Parameters.Add("@txt_Nom", SqlDbType.VarChar, 30).value = this.txt_Nom.Text;

您需要为表设置适当的数据类型和大小。

另外,查看一下USING语句。而且永远不要重复使用连接。

答案 1 :(得分:1)

要扩展Sean的评论,您至少需要这样的内容:

    cnx.Open();
    using(SqlCommand cmd = cnx.CreateCommand()) {
        cmd.CommandType = CommandType.Text;
        // I've cut this down a bit to save my typing fingers - you need all your cols and values
        cmd.CommandText = "insert into Employeur (Salaire) values(@Salaire)";
        cmd.Parameters.Add(new SqlParameter("@Salaire", decimal.Parse(txtSalaire.Text));
        cmd.ExecuteNonQuery();
    }
    cnx.Close();

您还应该在cnx创建过程中使用一下,但上面没有显示。