2016-11-03 12 views
-4

登録フォームを作成しようとしています.2つのフィールドを計算し、答えをDbに入れる必要があります。これは完璧にlocalhostで動作しますが、ファイルをサーバーにコピーしてライブで試してみると失敗します。ライブサーバーのフロートの問題

The error message that comes up when running from the server.

次のコード:

var l = Convert.ToSingle(honorarList.Text); 
    var m = Convert.ToSingle(bomList.Text); 
    var s = l + m; 

    var i = Convert.ToSingle(km.Text); 
    var j = Convert.ToSingle(kmSatsList.Text); 
    var k = i * j; 
    kmGodt.Text = " " + k; 

    var z = s + k; 
    totalSum.Text = " " + z; 

私は、SQLのINSERT文を削除しました。

SQL構造:

Structure I have in MS-SQL

+2

サーバーのロケールが異なるため、SQLでは異なる小数点区切り文字が必要です。検索を試みてください。また、文字列連結を使用してクエリを作成しないでください。パラメータ化されたクエリを使用するとうまくいきます。 – CodeCaster

+0

問題のコードは、この問題とはまったく関係ありません。問題は、SQLを実行する方法、値をSQLステートメントに連結し、ポストされたコードで連結することではありません。 –

答えて

2

私が推測する二つの問題、相互に関連の両方があります。

  1. 言語設定はサーバーによって異なります。それを解決するには、Convert.ToSingle方法に文化を提供するために、次のようになります。また、あなたはで始まるようにすべきではない文字列としてその変数を渡している

    Convert.ToSingle(km.Text, CultureInfo.InvariantCulture); 
    

  2. 最悪の問題は、パラメータ化されたクエリを使用していないことです。 SQLインジェクションに脆弱です。 SQLを自分で構築するのではなく、パラメータを使用するようにコードを書き直す必要があります。 ADO.NETプロバイダがfloat自体を変換するので、これもあなたの問題を解決します。

関連する問題