欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在ASP.NET中用存储过程执行SQL语句

程序员文章站 2024-03-08 15:19:52
存储过程执行效率比单独的sql语句效率高。 样编写存储过程?存储过程在sql server 2005对应数据库的可编程性目录下。 比如,创建一个存储过程 复制代码 代码如下...
存储过程执行效率比单独的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;
}

当一个项目中既要用到sql语句又要用到存储过程的时候,而执行sql语句和执行存储过程的方法都差不多,就是相差一个commandtype类型,所以如果有这样的情况,我们可以重构关于sql语句和存储过程这两个方法
复制代码 代码如下:

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
}