У меня есть метод для выполнения SQL запросов:
public static void Select(string mode, string[] attributes, string[] tables, string condition, string[] parameters, SqlDbType[] sqlDbType, Control[] control)
{
SqlCommand sqlCommand = new SqlCommand("SELECT " + string.Join(", ", attributes) + " FROM " + string.Join(", ", tables) + " " + condition + " ", Action.ExecuteConnection());
if (mode == "Single")
{
if (parameters == null || sqlDbType == null || control == null)
{
sqlDataReader = sqlCommand.ExecuteReader();
}
else
{
for (int i = 0; i < parameters.Length; i++)
{
sqlCommand.Parameters.Add(parameters[i], sqlDbType[i]).Value = control[i].Text;
}
sqlDataReader = sqlCommand.ExecuteReader();
}
} else if (mode == "Multiple")
{
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
sqlDataAdapter.Fill(dataSet);
}
Console.WriteLine(DateTime.Now + ": Подгрузка данных из таблицы - [" + string.Join(", ", tables) + "]");
}
Инициализация метода:
string[] parameters = { "@Username", "@Password" };
Command.Select("Single", new string[] { "EmployeeName", "UserSystem.UserPassword", "Position.PositionName" }, new string[] { "Employee" }, "INNER JOIN Position ON Employee.PositionID = Position.PositionID INNER JOIN UserSystem ON Employee.EmployeeID = UserSystem.EmployeeID WHERE Employee.EmployeeName = " + parameters[0] + " AND UserSystem.UserPassword = " + parameters[1] + "", parameters, new SqlDbType[] { SqlDbType.NVarChar, SqlDbType.NVarChar }, new Control[] { comboBox_username, textBox_password });
Этот метод универсальный, если я хочу заполнить таблицу или получить данные по выборке и заполнить их в элемент управления, то для этого я вызываю этот метод. Но есть одна оплошность. У меня есть переменная:
public static DataSet dataSet = new DataSet();
В которую заполняются данные полученные запросом. Метод работает, но если я после одной заполненной таблицы захочу тут же создать другую, то у меня сливаются две таблицы, то есть
dataSet
Не обнуляется, а хранит старые данные. Как мне сделать этот метод универсальным, чтобы dataSet был свой для каждого экземпляра метода. Но также, я смог его вызвать из другого класса, для добавление например в
control.DataSource
Надеюсь я достаточно доступно объяснил.
public class SelectResult : IDisposable
{
public DataSet dataset { get; set; }
public SqlDataReader reader { get; set; }
// TODO: implement IDisposable to dispose dataset/reader if they are not null
}
public static SelectResult Select(...)
{
SelectResult result = new SelectResult();
...
result.reader = sqlCommand.ExecuteReader();
...
...
result.dataset = new DataSet();
sqlDataAdapter.Fill(result.dataset);
...
return result;
}
using (SelectResult result = ClassWithStaticSelectMethod.Select(...))
{
// use result.dataset or result.reader
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как мы можем отловить событие нажатия кнопки? Я пытался сделать что-то вроде
В общем реализовал код, который автоматически может менять обложку в вк (у меня смена происходит по таймеру пока)И тут возникает вопрос, а где...
Подскажите как оптимизировать данный алгоритмЗагружаю объект(у меня около 20 объектов
Пожалуйста подскажите, возможно ли настроить autocomplete (точнее IntelliSense) в vscode так (или стороннее расширение ) чтобы получать автодополнение когда...