【发布时间】:2017-02-14 17:51:39
【问题描述】:
我正在解决以下问题,但找不到答案。
我有以下代码:
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,它会被数据库缩短(?)。例如:
我调用该方法的代码:
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
希望你能告诉我我做错了什么。
问候 极性
【问题讨论】:
-
也许太早了,我的轮子还没有开始完全转动,但是你说“MDB”是什么意思? 这让我觉得你在谈论 MSAccess。
-
我使用 XAMPP 和 MariaDB (MDB) 而不是 MySQL。我知道它几乎是类似的,但我不知道这是否是它不起作用的原因。
-
AddWithValue 无法提前知道数据库上的数据类型是什么,因此由于您的 ToString() ,它会构建一个字符串参数,但这会使用您的语言环境设置将您的输入转换为字符串。数据库不喜欢逗号作为小数点分隔符,想要一个点。
-
哦,你是对的。我试图添加一个 .replace(",",".") 之前,但它没有用。不知道为什么现在它起作用了!谢谢! PS:我是 StackOverflow 的新手,但我建议我应该为欧洲人写答案,对吧?
-
前面已经给出了答案。
标签: c# mysql double decimal mariadb