无法在C#中向数据库发送正确的值

时间:2017-07-04 21:23:00

标签: c# mysql decimal

我有C#(WindowsForm)应用程序,我想将值插入数据库。

我在数据库中输入的信息是产品名称,类别和成本,即十进制(5,2)。

但是,当我尝试插入类似1,90的值时,它只插入1,00。我想说它只在逗号之前插入数字,然后在逗号后添加两个零。

我已尝试使用此代码:

decimal varcost = costprod.Value;
MySqlCommand command_addprod = new MySqlCommand("INSERT INTO products (name, cost, id_category) VALUES ('" + nameprod.Text + "','" + varcost + "'," + getidcat + ")");

这段代码:

decimal varcost = costprod.Value;
MySqlCommand command_addprod = new MySqlCommand("INSERT INTO products (name, cost, id_category) VALUES ('" + nameprod.Text + "'," + varcost + "," + getidcat + ")");

这两个代码之间的区别在于第一个代码有引号而第二个代码没有。

使用第一个代码,它给了我说的错误。使用第二个代码,它给出了一个错误:“列数与第1行的值计数不匹配”。

欢迎每一位帮助!

修改

现在我尝试使用不同的代码:

string getidcat = catprod.SelectedItem.ToString();
        try
        {
            decimal varpreco = precoprod.Value;
            string varnome = nomeprod.Text;
            MySqlConnection mConn = new MySqlConnection("Persist Security Info=False;server = localhost; port=3307; database = startselling; user = root; password ='usbw';");                
            var sqlCommand = "INSERT INTO produtos (designacao, preco_unitario, id_categoria) VALUES ('@nome', @preco, (select id_categoria FROM categorias WHERE designacao = @categoria)";

            //Create mysql command and pass sql query
            using (var command = new MySqlCommand(sqlCommand, mConn))
            {
                command.Parameters.AddWithValue("@nome", varnome);
                command.Parameters.AddWithValue("@preco", varpreco);
                command.Parameters.AddWithValue("@categoria", getidcat);
                mConn.Open();
                command.ExecuteNonQuery();
                mConn.Close();
            }

            MessageBox.Show("Succeeded");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

(有些变量不同但不打扰)

我想我知道错误在哪里,但我不知道如何解决它。

我认为错误发生在变量“varpreco”上,因为它包含带逗号的值,并且由于这会使sql代码的逗号混淆,因此会出错。

现在也许如果我将逗号从变量更改为点,它应该可以工作。问题是我不知道如何使用它。

如果有人能帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

以下代码是如何为命令添加参数

MySqlCommand command_addprod = new MySqlCommand("INSERT INTO products (name, cost, id_category) VALUES (@nameprod, @varcost, @getidcat)";

command_addprod.Parameters.AddWithValue("@nameprod", nameprod.text);
command_addprod.Parameters.AddWithValue("@varcost", varcost);
command_addprod.Parameters.AddWithValue("@getidcat", getidcat);