使用C#

时间:2017-02-14 17:51:40

标签: c# mysql double decimal mariadb

我正在解决以下问题而无法找到答案。

我有以下代码:

    public void CreateCmd (string g_cmd,params object[] g_params)
    {
        int i = 0;
        MySqlCommand cmd = verbindung.CreateCommand();
        cmd.CommandText = g_cmd;
        foreach(object param in g_params)
        {
            cmd.Parameters.AddWithValue("?param"+i.ToString(), param.ToString());
            i++;
        }
        verbindung.Open();
        cmd.ExecuteNonQuery();
    }

该方法工作正常(到目前为止)但是如果我想在MDB中插入一个double,它会被数据库缩短(?)。 E. g。:

我用以下方法调用方法的代码:

database.CreateCmd("INSERT INTO `orders` (`id`, `time`, `tax`, `netto`, `brutto`) VALUES(NULL, CURRENT_TIMESTAMP, ?param0, ?param1, ?param2)", 0.19, 201.5, 239.785);

PHPMyAdmin中显示的输入: Screenshot from PHPMyAdmin

表的结构(我试过不同的数据类型): another cs of MDB

我希望你能告诉我我做错了什么。

问候 Polarety

2 个答案:

答案 0 :(得分:0)

这可能是一个文化问题,数据库期望逗号(,)而不是句点(。)?

否则,根据MariaDb的文档here检查数据库是否设置为UNSIGNED

此外,由于您要存钱,请注意浮点问题。也许你应该考虑一个固定点呢?

答案 1 :(得分:0)

右。

我编辑后

cmd.Parameters.AddWithValue("?param"+i.ToString(), param.ToString());

cmd.Parameters.AddWithValue("?param"+i.ToString(), param.ToString().Replace(",","."));

有效。谢谢!