2017-10-26 8 views
-1

AddwithValue() in mySQL
変数、widthコマンドをINSERTのように扱いますが、mysqlの値の種類と正確に一致する必要があります。入力する テーブル内の数:
iがmyvalue = "123.33"
または
myvalueは=(ダブル)123.33333333
myvaleu =(10進数)123.333MySQLではどのようにAddwithValue()が変数型の幅を扱うのですか?C#

string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString; 
MySqlConnection conn = new MySqlConnection(connString); 
conn.Open(); 
MySqlCommand comm = conn.CreateCommand(); 
comm.CommandText = "INSERT INTO temperature(sample1,sample2) VALUES(@sample1, @sample2)"; 
comm.Parameters.Add("@sample1", "123.33"); 
double sample2 = 123.0 + 1/3; 
comm.Parameters.Add("@sample2", sample2); //is that ok? 
comm.ExecuteNonQuery(); 
conn.Close(); 

を使用する必要があり、私はこのことを思ったんだけどなぜなら、多くの場合、mySQLで設定されているので、変数には小数の桁数があります。

Currentl私のC#アプリケーションを読み取ります
ダブルス
小数
日付(フル日付+時間)

+0

調整問題、確かにそれは明らか – user3800527

答えて

4

あなたはAddWithValueを使用しないでください。 Can we stop to use AddWithValue alreadyを参照してください。

データベースエンジンの予想される構造に受け取った値を変換する必要があるデータベースエンジンによってすべてが推測されるため、単純さの利点がありますが、正確さを信頼できません。 (そして、私は文字列として渡された日付の値に起因する落とし穴から始まらない)

テキストフィールドの文字列を渡すことは、パラメータが文字列と同じサイズになり、

たとえば、this article on MSDNは、Sql Serverに重点を置いていましたが、AddWithValueがデータベースエンジンにもたらす可能性のある悪影響に関する多くの情報が含まれています。

このように、Addメソッドを使用してください。私はそのようにそれを入力した場合(それでも一つのコード行)

cmd.Parameters.Add("@myParam", MySqlDbType.VarChar, 100, "myTextField").Value = "Test"; 
+0

を波平、私はその非推奨という警告を取得し、私はAddWithValueを使うべきです。私は記事を赤くしていますが、カスタムタイプではなく、かなり一般的な通常の変数タイプを使用しています。だから、私は細かい幅のAddWithValueでなければなりません。おそらく、私は現在のバージョンのmySqlとそのコネクタを使用しているからです。 – user3800527

+0

いいえ、あなたは[Add of this Overload](https://msdn.microsoft.com/en-us/library/9dd8zze1(v = vs.110).aspx)を読んでいます。パラメータ名とその値のオブジェクトだけを取るAddは非推奨です。その理由は、オブジェクトを渡すとDbTypeをとるオーバーロードと競合する可能性があるからです。上記で説明したメソッドの非推奨はありません – Steve

+0

これについて確かに感じていないので、私はデータベースエンジンがこれを適切に実装する(または修正される)ことを奨励します。限り、私はタイプを入れていない限り、コネクターは、私はすべきではありませんが、私はAddwidthの値に違反するべきではありません。使用されている型はかなり一般的です。つまり、Double Int long decimalです。 – user3800527

関連する問題