У меня проблемы с POST и PUT для моего бэкэнда. Соответствующую структуру таблицы можно увидеть здесь
DROP TABLE IF EXISTS coordinate;
CREATE TABLE coordinate
(
id int(10) NOT NULL auto_increment,
longitude double(8,4) NOT NULL,
latitude double(8,4) NOT NULL,
measurementId int(10) default NULL,
PRIMARY KEY (id),
FOREIGN KEY (measurementId)
REFERENCES measurement (id)
ON DELETE CASCADE
);
Он имеет соответствующий Model
, который выглядит следующим образом
public class Coordinate
{
public Coordinate()
{
}
public int ID { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public int MeasurementId { get; set; }
...
}
Я пытаюсь вставить числовые значения в coordinate
следующим образом:
sql = "UPDATE coordinate SET longitude = '" + coordinate.Longitude + "," + " latitude = " + coordinate.Latitude + "," + " measurementId = " + coordinate.MeasurementId + "' WHERE id = " + id.ToString();
Обратите внимание на включение одинарной скобки перед двойной скобкой после longitude = '"
и + "' WHERE ...
Когда я запускаю это с отладчиком, строка sql
выглядит так:
sql = "UPDATE coordinate SET longitude = '55,6, latitude = 70,33, measurementId = 2' WHERE id = 2'
А мой бэкэнд выдает следующую ошибку:
{
"Message": "An error has occurred.",
"ExceptionMessage": "Data truncated for column 'longitude' at row 1",
"ExceptionType": "MySql.Data.MySqlClient.MySqlException",
...
}
Я догадываюсь, что строка sql
построена неправильно из-за включения одиночной скобки, поэтому я удаляю ее как и создаю новую строку sql
следующим образом:
sql = "UPDATE coordinate SET longitude = " + coordinate.Longitude + "," + " latitude = " + coordinate.Latitude + "," + " measurementId = " + coordinate.MeasurementId + " WHERE id = " + id.ToString();
Обратите внимание на снятие одиночной скобки '
в местах, где она была ранее. Теперь в отладчике строка sql
построена так:
sql = "UPDATE coordinate SET longitude 55,6 latitude = 70,33, measurementId = 2 WHERE id = 2"
У меня сложилось впечатление, что числовые значения должны быть разделены .
, а не ,
, что может быть причиной того, что серверная часть теперь выдает эту ошибку:
{
"Message": "An error has occurred.",
"ExceptionMessage": "You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near '6, latitude = 70,33, measurementId = 2 WHERE id = 2' at line 1",
}
Я немного растерялся, как потом обрабатывать вставку числовых значений в мою базу данных. Любая помощь очень ценится.