ASP.NETでストレージ・プロシージャによるSQL文の実行

2017 ワード

ストレージ・プロシージャの実行効率は、個別のSQL文よりも効率的です.
ストレージ・プロシージャの作成方法ストレージ・プロシージャは、SQL Server 2005に対応するデータベースのプログラマブル・ディレクトリの下にあります.
たとえば、ストレージ・プロシージャの作成
 
  
create procedure procNewsSelectNewNews
as
begin
select top 10 n.id,n.title,n.createTime,c.name from news n
inner join category c on n.caId=c.id
order by n.createTime desc
end

定義済みストレージ・プロシージャの実行
exec procNewsSelectNewNews
ストアド・プロシージャが返すテーブル
 
  
public DataTable test(string procName)
{
DataTable dt=new DataTable();
cmd=new SqlCommand(procName,GetConn()); // , GetConn()
cmd.CommandType=CommandType.StoredProcedure; // SQL
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection));// SQL SqlConnection SqlDataReader , SqlDataReader SQL
{ dt.Load(sdr); //load dataread }
return dt;
}

1つのプロジェクトでSQL文とストアド・プロシージャを使用する場合、SQL文とストアド・プロシージャを実行する方法はほとんど異なり、CommandTypeタイプが異なるため、このような場合、SQL文とストアド・プロシージャの2つの方法を再構築することができます.
 
  
public DataTable ExecuteQuery(string sqlText,CommandType ct); // SQL
{
DataTable dt=new DataTable();
cmd=new SqlCommand(sqlText,GetConn());
cmd.CommandType=ct;
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{ dt.Load(sdr);}
return dt;
}

クエリーの方法を書くと、SQL文やストアド・プロシージャの方法を書くことができます.
たとえば、ストアド・プロシージャ
 
  
public DataTable SelectNewNews()
{
return sqlhelper.ExecuteQuery(“ ”,CommandType.StoredProcedure)
}

SQL文
 
  
public DataTable SelectAll()
{
DataTable dt=new DataTable();
string sql=”select * from news”;
dt=sqlhelper.ExecuteQuery(sql,CommandType.Text);・
return dt
}