c# - mysql 不会从 C# 中保存 double

标签 c# mysql database

我在 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;

最佳答案

这应该有效:

  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() 命令即可释放所有对象。

关于c# - mysql 不会从 C# 中保存 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596351/

相关文章:

存储函数中的MySQL if语句序列

mysql - 多个mysql表列的求和、相减和连接

php - 从一张表中获取另一张表中不存在的记录

php - 如何创建数据库驱动的永久链接?

c# - 如何在 ASP.NET Core 中获取没有构造函数注入(inject)的注入(inject)服务的实例?

c# - 为什么在这个数据库连接中使用while循环?

c# - VS2010中文件不存在异常

c# - C# 中的泛型 - 无法将 'classname' 转换为 'TGenericClass'

database - QT中清空sqlite数据库

sql - 我可以将 NOLOCK 应用于数据库范围的设置吗?