2017-02-14 57 views
0

我正在解決以下問題,但找不到答案。用C將十進制值插入MySQL#

我有下面的代碼:

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它得到了由數據庫縮短(?)。 E.克:

我調用該方法的代碼:

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

表的結構(I已經嘗試不同的數據類型): another cs of MDB

我希望你能告訴我我做錯了什麼。

問候 Polarety

+0

也許現在太早了,我的輪子還沒有開始完全旋轉,但是當你說「MDB」時它是什麼意思? _It讓我覺得你在談論MSAccess._ – Uueerdo

+0

Im使用XAMPP與MariaDB(MDB)而不是MySQL。我知道它幾乎是相似的,但我不知道這是否是它不起作用的原因。 – Polarety

+0

AddWithValue無法預先知道數據庫上的數據類型是什麼,因此它會根據您的ToString()生成一個字符串參數,但這會使用您的語言環境設置將字符串轉換爲字符串。數據庫不像逗號那樣需要小數點分隔符,並且需要一個點。 – Steve

回答

0

這可能是一個文化問題,在數據庫期待一個逗號(,)而不是一個句點(。)?

否則,檢查數據庫設置爲UNSIGNED,每個文檔here爲MariaDB的

而且,因爲要存儲的錢,請注意浮點問題。也許你應該考慮一個固定點呢?

0

沒錯。

後,我編輯

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

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

它的工作原理。謝謝!