В рамках моих общих утилит, которые я использовал в моей бизнес-приложений, у меня есть этот код ...Использование SqlDataSource из ситуаций неуправляющая
using System.Web.UI.WebControls;
public class Database
{
/// <summary>
/// Creates a DataView object using the provided query and an SqlDataSource object.
/// </summary>
/// <param name="query">The select command to perform.</param>
/// <returns>A DataView with data results from executing the query.</returns>
public static DataView GetDataView(string query)
{
SqlDataSource ds = GetDBConnection();
ds.SelectCommand = query;
DataView dv = (DataView)ds.Select(DataSourceSelectArguments.Empty);
return dv;
}
/// <summary>
/// Creates a SqlDataSource object with initialized connection string and provider
/// </summary>
/// <returns>An SqlDataSource that has been initialized.</returns>
public static SqlDataSource GetDBConnection()
{
SqlDataSource db = new SqlDataSource();
db.ConnectionString = GetDefaultConnectionString(); //retrieves connection string from .config file
db.ProviderName = GetDefaultProviderName(); //retrieves provider name from .config file
return db;
}
}
Тогда в моих проектах, для извлечения данных из баз данных я буду иметь некоторый код, как ..
DataView dv=Database.GetDataView("select mycolumn from my table");
//loop through data and make use of it
Я взял некоторое количество тепла от людей, для использования SqlDataSource таким образом. Людям, похоже, не нравится, что я использую веб-контроль исключительно из кода вместо того, чтобы помещать его на страницу ASPX. Это не похоже на них, но они не смогли сказать мне недостаток. Итак, есть ли недостаток? Это мой главный вопрос. Потому что, если есть много недостатков, мне, возможно, придется изменить, как я делаю много внутренних приложений, которые я разработал.
Мой класс базы данных работает даже в ситуациях, отличных от nonASP.NET, до тех пор, пока я добавляю сборку System.Web. Я знаю, что это небольшое увеличение размера пакета, но я чувствую, что это того стоит для типа приложения, которое я пишу. Есть ли недостаток в использовании SqlDataSource из программы WPF/Windows Forms/Console?
Является ли этот код упрощенной версией вашего реального кода или вы никогда не передаете параметры по вашему запросу? Поскольку код, который вы опубликовали, приглашает [SQL Injection] (http://www.troyhunt.com/2013/07/everything-you-wanted-to-know-about-sql.html), если вам нужно пройти параметры. –
@RichardDeeming Упрощенный, у меня есть другой код, который скрабы для SQL Injection. Полагаю, я должен упомянуть, что этот код используется для внутренних бизнес-приложений внутри нашей компании на 60 человек. Это не общедоступно. – mason
И нет возможности внутренних пользователей, пытающихся взломать базы данных или вредоносные программы, попадающие в вашу сеть, не так ли? http://www.troyhunt.com/2013/10/your-corporate-network-is-already.html –