0

C#にdouble値があり、それらをデータベースに入れたいと思います。

問題は、データベース内のすべての形式を試しましたが、それでもDOTに署名するための番号を取得していることです。たとえば、番号45.548がある場合、データベースに45として保存されます。コードをデバッグしているときに、値が実際に45.548として送信されていることがわかります。

これが私のコードですので、何がうまくいかなかったかを見ることができます:

MySqlConnection con = null;
MySqlCommand cmd = null;

con = new MySqlConnection("server=localhost;database=Data_GPS;uid=root;pwd=******");
con.Open();
cmd = new MySqlCommand("insert into Data values (null, ?Parname , ?Parname2, ?Parname3);", con);
cmd.Parameters.AddWithValue("?Parname", deciLat);
cmd.Parameters.AddWithValue("?Parname2", deciLon);
cmd.Parameters.AddWithValue("?Parname3", time);
cmd.ExecuteNonQuery();

con.Close();

データベースの形式をfloat、double、decimal、varcharで変更しようとしましたが、それでも正しい数値が得られません。

ありがとうございました

編集:

これが私の小数値を埋める方法です:

string[] arrLon = Lon.Split(new char[] { '°', '"' }, StringSplitOptions.RemoveEmptyEntries);
double dblLon = double.Parse(arrLon[0]) + double.Parse(arrLon[1], new System.Globalization.NumberFormatInfo()) / 60;
double deciLon = arrLon[2] == "E" ? dblLon : -dblLon;
string[] arrLat = Lat.Split(new char[] { '°', '"' }, StringSplitOptions.RemoveEmptyEntries);
double dblLat = double.Parse(arrLat[0]) + double.Parse(arrLat[1], new System.Globalization.NumberFormatInfo()) / 60;
double deciLat = arrLat[2] == "N" ? dblLat : -dblLat;
4

2 に答える 2

1

これは機能するはずです:

  using (MySqlConnection con = new MySqlConnection("server=localhost;database=Data_GPS;uid=root;pwd=******")
  {
        con.Open();
        using (MySqlCommand  cmd = new MySqlCommand("insert into Data values (null, @Parname , @Parname2, @Parname3);", con)
        {
            // change MySqlDbType.Double to reflect the real data type in the table.
            cmd.Parameters.Add("@Parname", MySqlDbType.Double).Value = deciLat;
            cmd.Parameters.Add("@Parname2", MySqlDbType.Double).Value = deciLon;
            cmd.Parameters.Add("@Parname3", MySqlDbType.DateTime).Value = time;
            cmd.ExecuteNonQuery();
        }
  }

using明示的なコマンドを必要とせずにすべてのオブジェクトを解放できるように、常に接続とコマンドを内部に配置してくださいDispose()

于 2012-05-15T08:01:39.930 に答える
0

残念ながら、私は自分の考えを確認する機会がありませんが、これはあなたにとって簡単なはずです。インスタンスを作成し、MySqlDbTypeプロパティを設定して、パラメータを手動で追加するとどうなりますか?次に、その値を設定します。

MySqlParameter par = new MySqlParameter()
par.ParameterName = parameterName;
par.MySqlDbType = parameterType;
par.Value = someValue;

....
于 2012-05-15T07:56:05.337 に答える