Мне интересно, возможно ли и хорошая практика сохранять префикс таблицы в файле конфигурации и использовать его в каждом запросе SqlCommand
, добавляя его к реальному имени таблицы, чтобы два приложения с одинаковой структурой таблицы могли использовать одну и ту же базу данных без обмен данными.
На данный момент все мои SqlCommand
запросы выглядят так:
using (var connection = new SqlConnection(connString))
{
using (SqlCommand sqlCmd = new SqlCommand("SELECT * from SomeTable", connection))
{
connection.Open();
using (SqlDataReader dr = sqlCmd.ExecuteReader())
{
if (dr.HasRows)
{
while (dr.Read())
{
Model _record = new Model();
_record.ID = Convert.ToInt32(dr["ID"]);
_record.Value = Convert.ToString(dr["Value"]);
RecordsList.Add(_record);
}
}
}
connection.Close();
return RecordsList;
}
}
Или:
using (var connection = new SqlConnection(connString))
{
using (SqlCommand sqlCmd = new SqlCommand("UPDATE SomeTable SET Value = @Value " +
"WHERE ID = @Id;", connection))
{
sqlCmd.Parameters.Add("@Value", System.Data.SqlDbType.NVarChar).Value = _record.Value;
sqlCmd.Parameters.Add("@Id", System.Data.SqlDbType.Int).Value = _record.Id;
connection.Open();
sqlCmd.ExecuteNonQuery();
connection.Close();
}
}
Как видите, я использую параметров, но невозможно использовать параметры в имени таблицы.
Какой должен быть подход для защиты запроса от внедрения SQL, если я хочу добавить prefix_
в начало имени таблицы, чтобы приложение обращалось к таблице с префиксом, сохраненным в файле настроек?