C# 在mySQL中存储和收集双值
从周五开始,我就一直在努力处理这段代码,但我就是不能让它工作,我想把两个双值存储到一个表中,我得到的最接近的结果是丢失了坐标值上的小数,这在地图上是错误的 我的存储方法如下所示:C# 在mySQL中存储和收集双值,c#,mysql,C#,Mysql,从周五开始,我就一直在努力处理这段代码,但我就是不能让它工作,我想把两个双值存储到一个表中,我得到的最接近的结果是丢失了坐标值上的小数,这在地图上是错误的 我的存储方法如下所示: public bool saveLatLong(Double lat, Double lon, String mapID) { bool worked = true; String myConnection = WebConfigurationManager.ConnectionStrings[&
public bool saveLatLong(Double lat, Double lon, String mapID)
{
bool worked = true;
String myConnection = WebConfigurationManager.ConnectionStrings["webbased"].ConnectionString;
MySqlConnection myConn = new MySqlConnection(myConnection);
String strSQL = "UPDATE map SET Latitud = '"+lat+"' AND Longitud = '"+lon+"' WHERE ID = '" + mapID + "';";
MySqlCommand myCommand = new MySqlCommand();
myCommand.Connection = myConn;
myCommand.CommandText = strSQL;
try
{
myConn.Open();
myCommand.ExecuteNonQuery();
}
catch (MySqlException myE)
{
worked = false;
Console.WriteLine("It's all gone south!: " + myE.Message);
}
finally
{
myConn.Close();
}
return worked;
}
public void getCordinates(String mapID, out double latitude, out double longitude)
{
double nlat = 0.0;
double nlon = 0.0;
String myConnection = WebConfigurationManager.ConnectionStrings["webbased"].ConnectionString;
MySqlConnection myConn = new MySqlConnection(myConnection);
String strSQL = "SELECT Latitud,Longitud FROM cases WHERE ID = '"+mapID+"';";
MySqlCommand myCommand = new MySqlCommand();
myCommand.Connection = myConn;
myCommand.CommandText = strSQL;
try
{
myConn.Open();
MySqlDataReader myReader;
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
if (myReader.GetValue(0).Equals(DBNull.Value)) { nlat = 0.0; } else { nlat = myReader.GetDouble(0); }
if (myReader.GetValue(1).Equals(DBNull.Value)) { nlon = 0.0; } else { nlon = myReader.GetDouble(1); }
}
}
catch (MySqlException myE)
{
Console.WriteLine("It's all gone south!: " + myE.Message);
}
finally
{
myConn.Close();
}
latitude = nlat;
longitude = nlon;
}
在调试中,MySQL字符串看起来还可以:更新映射集Latitud='577141957471802'和Longitud='119798612594604',其中ID='563-34'
我的get方法如下所示:
public bool saveLatLong(Double lat, Double lon, String mapID)
{
bool worked = true;
String myConnection = WebConfigurationManager.ConnectionStrings["webbased"].ConnectionString;
MySqlConnection myConn = new MySqlConnection(myConnection);
String strSQL = "UPDATE map SET Latitud = '"+lat+"' AND Longitud = '"+lon+"' WHERE ID = '" + mapID + "';";
MySqlCommand myCommand = new MySqlCommand();
myCommand.Connection = myConn;
myCommand.CommandText = strSQL;
try
{
myConn.Open();
myCommand.ExecuteNonQuery();
}
catch (MySqlException myE)
{
worked = false;
Console.WriteLine("It's all gone south!: " + myE.Message);
}
finally
{
myConn.Close();
}
return worked;
}
public void getCordinates(String mapID, out double latitude, out double longitude)
{
double nlat = 0.0;
double nlon = 0.0;
String myConnection = WebConfigurationManager.ConnectionStrings["webbased"].ConnectionString;
MySqlConnection myConn = new MySqlConnection(myConnection);
String strSQL = "SELECT Latitud,Longitud FROM cases WHERE ID = '"+mapID+"';";
MySqlCommand myCommand = new MySqlCommand();
myCommand.Connection = myConn;
myCommand.CommandText = strSQL;
try
{
myConn.Open();
MySqlDataReader myReader;
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
if (myReader.GetValue(0).Equals(DBNull.Value)) { nlat = 0.0; } else { nlat = myReader.GetDouble(0); }
if (myReader.GetValue(1).Equals(DBNull.Value)) { nlon = 0.0; } else { nlon = myReader.GetDouble(1); }
}
}
catch (MySqlException myE)
{
Console.WriteLine("It's all gone south!: " + myE.Message);
}
finally
{
myConn.Close();
}
latitude = nlat;
longitude = nlon;
}
无论我尝试过什么,结果都是0.0,我就是不明白为什么,我相信我已经尝试过了所有的方法,但我对这个问题没有头绪。我怀疑我在get方法中运行的getDouble命令有问题,但我不知道还能做什么
我很欣赏任何关于问题所在的想法或见解。它们被描述为Double,但由于mysql没有Double,我怀疑它们应该是float。尝试用句点替换逗号。MySQL可能不理解国际格式。它可以正常存储。在double中,但由于某些奇怪的原因,当我收集时,它仍然是0.0值:/Gordon,谢谢你的帮助!