PostgreSQLデータベースと通信するためにC#でNpgsqlを使用しています。データベースで使用されている名前はすべて大文字と小文字が混在しているため、クエリでは各名前を二重引用符で囲んでいます。クエリの送信方法は次のとおりです。
// 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がクエリをこのように処理するのでしょうか。また、この問題をどのように解決できますか?クエリが間違った方法で作成されていませんか?