使用 C# 将十进制值插入 MySQL
Insert decimal values into MySQL with C#
我正在处理以下问题,但找不到答案。
我得到了以下代码:
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 中显示的输入:
Screenshot from PHPMyAdmin
table的结构(我试过不同的数据类型):
another cs of MDB
我希望你能告诉我我做错了什么。
您好
极性
这可能是文化问题,数据库需要逗号 (,) 而不是句点 (.)?
否则,根据 MariaDb
的文档 here,检查数据库是否设置为 UNSIGNED
另外,由于您正在存钱,请注意floating-point问题。或许您应该考虑使用 fixed-point?
没错。
我编辑后
cmd.Parameters.AddWithValue("?param"+i.ToString(), param.ToString());
至
cmd.Parameters.AddWithValue("?param"+i.ToString(), param.ToString().Replace(",","."));
有效。谢谢!
我正在处理以下问题,但找不到答案。
我得到了以下代码:
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 中显示的输入: Screenshot from PHPMyAdmin
table的结构(我试过不同的数据类型): another cs of MDB
我希望你能告诉我我做错了什么。
您好 极性
这可能是文化问题,数据库需要逗号 (,) 而不是句点 (.)?
否则,根据 MariaDb
的文档 here,检查数据库是否设置为UNSIGNED
另外,由于您正在存钱,请注意floating-point问题。或许您应该考虑使用 fixed-point?
没错。
我编辑后
cmd.Parameters.AddWithValue("?param"+i.ToString(), param.ToString());
至
cmd.Parameters.AddWithValue("?param"+i.ToString(), param.ToString().Replace(",","."));
有效。谢谢!