2017-02-14 4 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にdoubleを挿入したい場合には、データベースによって短縮されてしまいました(?)。大腸菌G .:

私はメソッドを呼び出すコード:

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

入力WICHがPHPMyAdminの中に示されている: Screenshot from PHPMyAdmin

テーブルの構造(I異なるデータを試みましたタイプ: another cs of MDB

私が間違っていることを教えてください。

挨拶 Polarety

+0

早すぎると私の車輪がまだ完全に回転し始めていないかもしれませんが、あなたが「MDB」と言うときはどういう意味ですか? _これはMSAccess._ – Uueerdo

+0

について話していると思います.MimではなくMariaDB(MDB)でXAMPPを使用しています。私はそのほぼsimularを知っているが、これはなぜそれが動作しなかった理由であるかわからない。 – Polarety

+0

AddWithValueは、データベースのデータ型を事前に知ることができないため、ToString()のために文字列パラメータを作成しますが、ロケール設定を使用して入力を文字列に変換します。データベースは小数点記号としてカンマを好きではなく、ポイントを求めています。 – Steve

答えて

0

それはデータベースにコンマが期待している文化の問題、(、)の代わりに、ピリオド(。)であるかもしれませんか?あなたがお金を保存しているので、

そうでない場合、データベースはUNSIGNEDなるように設定されている場合MariaDb

のドキュメントhereごとに、チェックまた、浮動小数点の点に注意してください。代わりに固定小数点を考慮する必要がありますか?

0

右。

私はそれが動作

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

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

を編集した後。ありがとうございました!

関連する問題