私はいくつかの単純な C# を作成しており、通常は、データベースからデータを挿入して取得する同じクラスと関数を使用しています。
たとえば、これは私の機能です:
public bool insert_and_ConfirmSQL(String Query, String comments)
{
bool success = false;
NpgsqlCommand cmd = new NpgsqlCommand();
NpgsqlConnection mycon = new NpgsqlConnection();
string connstring = String.Format("Server={0};Port={1}; User Id={2};Password={3};Database={4};timeout=1000;CommandTimeout=120;", tbHost, tbPort, tbUser, tbPass, tbDataBaseName);
mycon.ConnectionString = connstring;
cmd = mycon.CreateCommand();
cmd.CommandText = Query;
mycon.Open();
int temp = 0;
try
{
temp = cmd.ExecuteNonQuery();
success = true;
}
catch
{
if (mycon.State == ConnectionState.Open)
{
mycon.Close();
}
}
return success;
}
このクエリはインジェクションに対して安全ではないことがわかったので、準備済みステートメントを使用する必要があります。しかし、クエリがそれぞれ異なる場合、これにどのようにアプローチすればよいかわかりません。クエリを挿入して「準備」する「ユニバーサル」関数はありますか?