次のように、クエリのテーブル名をコマンドパラメータとして指定したいと思います。
public class Foo
{
private const String myTableName = "mytable";
public void Bar()
{
NpgsqlCommand command = new NpgsqlCommand("SELECT * from :tableName", connection);
command.Parameters.Add(new NpgsqlParameter("tableName", DbType.String));
command.Parameters[0].Value = myTableName;
}
}
これにより、このクエリが発生するよう"SELECT * from E'mytable'"
です。エラーが発生します(一重引用符に注意してください)。
これには本当に文字列の連結を行う必要がありますか?テーブル名はユーザーが変更できないため、セキュリティの観点からは問題ではありませんが、SQLクエリを作成するための文字列の連結により、常に不気味になります...
ありがとう、エリック