kykyryky
@kykyryky

Как вызвать хранимую процедуру из приложения?

В коде проекта есть метод, который на вход получает sql-запрос, а на выходе отображает содержимое таблицы в DataGridView:

private void GetData(string selectCommand)
        {
            String connectionString = @"Data Source=WIN-940; Initial Catalog = auto_repair;User ID=test;Password=123";
                        
            dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
            DataTable table = new DataTable();
            table.Locale = System.Globalization.CultureInfo.InvariantCulture;
            dataAdapter.Fill(table);
            bindingSource1.DataSource = table;
            dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
        }


Вызываю так:
private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = bindingSource1;
            GetData("select * from Vehicles");
        }


Большие запросы я оформил в виде хранимых процедур, но у меня не получается вызвать их с помощью того, что у меня сделано. Просто передать имя процедуры в GetData не прокатывает.
В интернетах нашел что-то вроде этого, и совсем запутался.
using (var sqlConn = new SqlConnection("строка соединения"))
{ 
	var sqlCmd = new SqlCommand("Имя Stored Procedure", sqlConn);
	sqlCmd.CommandType = CommandType.StoredProcedure;
	
	sqlConn.Open();
	sqlCmd.ExecuteNonQuery();
}

Это, как я понял, совсем другой способ выполнения запросов в бд и как его переделать в подобие моего с выводом в dataGrid я не понимаю, нужна помощь или объяснение. Спасибо.
  • Вопрос задан
  • 1310 просмотров
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
dataAdapter = new SqlDataAdapter("Имя процедуры", connectionString);
dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

Либо с использованием SqlCommand:
var connection = new SqlConnection(connectionString);
// connection.Open();
var cmd = new SqlCommand("Имя процедуры", connection);
cmd.CommandType = CommandType.StoredProcedure;
dataAdapter = new SqlDataAdapter(cmd);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы