Я использую Npgsql с C# для связи с моей базой данных PostgreSQL. Все имена, используемые в моей базе данных, являются смешанными, поэтому в запросе я уверен, что я использую двойные кавычки вокруг каждого имени. Вот как я посылаю запрос:Почему PostgreSQL обрабатывает значение в моем запросе, как будто это имя столбца?
// construct an insert query
string insertQuery = "insert into \"Update\" (\"Vehicle\",\"Property\",\"Value\") " +
"values (" + vehicleNum.ToString() + ",\"" + propertyName +
"\",\"" + propertyValue + "\")";
// execute the query
NpgsqlCommand insertCommand = new NpgsqlCommand(insertQuery, conn);
insertCommand.ExecuteScalar();
Добавляя точки останова и проверки, я проверил, что строка insertQuery
выглядит это перед отправкой:
insert into "Update" ("Vehicle","Property","Value") values (12345,"EngineSpeed","50")
Когда я отправить этот запрос, PostgreSQL дает мне ошибку, которая обернута в виде исключения Npgsql, который гласит: ERROR: 42703: column "EngineSpeed" does not exist
из моего запроса, это должно быть очевидно, что EngineSpeed
не столбец, это значение Property
колонки, так естественно, столбец с таким именем вряд ли будет существовать. Так почему PostgreSQL обрабатывает мой запрос таким образом и как я могу решить эту проблему? Был ли мой запрос сконструирован неправильно?
... Ваша таблица действительно называется «Обновить»? – Phill
Да, это не отличная идея. –
Не поддерживает ли Npgsql заполнители? Построение строки SQL вручную, как это, действительно, не очень хорошая идея. –