1

When I am sending decimal value from C# for example : 5.54 When I am executing query I can see that my variables are represented as 5,54

Anyone have an idea how to achieve to get DOT and not COMMA?

Here is my code:

using (MySqlConnection conn = new MySqlConnection(conn_string.ToString()))
                using (MySqlCommand cmd = conn.CreateCommand())
                {  
                    cmd.CommandText = string.Format("INSERT Test (lat, long) VALUES ({0},{1})",
                                                   OSGconv.deciLat, OSGconv.deciLon);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
4

2 に答える 2

4

COMMAではなくDOTを取得する方法を知っている人はいますか?

まず、SQLに値を直接埋め込まないでください。代わりに、パラメーター化されたSQLを使用してください。例については、ドキュメントを参照してくださいMySqlCommand.Parameters。パラメータ化されたクエリを常に使用する必要があります。

  • コードをデータから分離します
  • SQLインジェクション攻撃を防ぎます(これらの数値の問題ではありませんが、文字列を考慮してください...)
  • このような変換の問題を防ぎます

ここには、より一般的なポイントがあります。必要以上に変換を実行しないでください。データをある形式から別の形式に変換するたびに、データが失われたり、さらに悪化したりするリスクがあります。データを可能な限り最も適切な表現に保つことができれば、問題を最小限に抑えることができます。

于 2012-05-09T18:27:41.550 に答える
0

私は他のアドバイスに完全に同意します。コンマまたはドットに関する他の質問については、CurrentCulture に依存します。適切な形式を取得するには、ToString を使用して、Culture.InvariantCulture を 2 番目のパラメーターとして指定する必要があります。これにより、小数点記号にドットが使用されます。

しかし、もう 1 つの答えは非常に良いアドバイスです。DbParameters を使用してください。さらに、値を文字列に変換するのではなく、C# に保持されているとおりに渡します。ADO.NET プロバイダーによって正しく処理されます。つまり、変数を渡す必要がある場合はfloat、 に変換せずにそのまま値stringとして渡しfloatます。

于 2012-05-09T18:38:44.773 に答える