使用C#将十进制值插入MySQL

问题描述 投票:0回答:2

我正在解决以下问题,但找不到答案。

我有以下代码:

    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 插入一个双精度值,它会被数据库缩短(?)。例如:

我调用该方法的代码:

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

PHPMyAdmin 中显示的输入: 来自 PHPMyAdmin 的屏幕截图

表的结构(我尝试过不同的数据类型): MDB 的另一个 cs

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

c# mysql double decimal mariadb
2个回答
1
投票

这可能是文化问题,数据库需要逗号 (,) 而不是句点 (.)?

否则,请检查数据库是否设置为

UNSIGNED
,根据 MariaDb 的文档此处

另外,由于您是存钱,请注意浮点问题。也许您应该考虑使用定点?


0
投票

对。

编辑后

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

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

它有效。谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.