Поставщики данных .NET состоят из ряда классов, используемых для подключения к источнику данных, выполнения команд и возврата наборов записей.Объект Command в ADO.NET предоставляет ряд методов Execute, которые можно использовать для выполнения запросов SQL в различных модах.
Хранимая процедура - это предварительно скомпилированный исполняемый объект, который содержит один или несколько SQLзаявления.Во многих случаях хранимые процедуры принимают входные параметры и возвращают несколько значений.Значения параметров могут быть предоставлены, если для их принятия написана хранимая процедура.Пример хранимой процедуры с принятием входного параметра приведен ниже:
CREATE PROCEDURE SPCOUNTRY
@COUNTRY VARCHAR(20)
AS
SELECT PUB_NAME FROM publishers WHERE COUNTRY = @COUNTRY
GO
Вышеуказанная хранимая процедура принимает название страны (@COUNTRY VARCHAR (20)) в качестве параметра и возвращает всех издателей из страны ввода.Как только для CommandType установлено StoredProcedure, вы можете использовать коллекцию Parameters для определения параметров.
command.CommandType = CommandType.StoredProcedure;
param = new SqlParameter("@COUNTRY", "Germany");
param.Direction = ParameterDirection.Input;
param.DbType = DbType.String;
command.Parameters.Add(param);
Приведенный выше код передает параметр страны в хранимую процедуру из приложения C #.
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string connetionString = null;
SqlConnection connection ;
SqlDataAdapter adapter ;
SqlCommand command = new SqlCommand();
SqlParameter param ;
DataSet ds = new DataSet();
int i = 0;
connetionString = "Data Source=servername;Initial Catalog=PUBS;User ID=sa;Password=yourpassword";
connection = new SqlConnection(connetionString);
connection.Open();
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "SPCOUNTRY";
param = new SqlParameter("@COUNTRY", "Germany");
param.Direction = ParameterDirection.Input;
param.DbType = DbType.String;
command.Parameters.Add(param);
adapter = new SqlDataAdapter(command);
adapter.Fill(ds);
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
MessageBox.Show (ds.Tables[0].Rows[i][0].ToString ());
}
connection.Close();
}
}
}