我想知道是否可以将表前缀保留在配置文件中并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();
}
}
如您所见,我使用参数,但不能在表名上使用参数。
如果我想添加prefix_
到表名的开头,那么保护查询免受 SQL 注入的方法应该是什么,所以应用程序会与存储在设置文件中的带有前缀的表进行对话?