在ASP.NET中用存储过程执行SQL语句
来源: 阅读:898 次 日期:2014-10-13 10:26:01
温馨提示: 小编为您整理了“在ASP.NET中用存储过程执行SQL语句”,方便广大网友查阅!

存储过程:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。by google

存储过程执行效率比单独的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

}

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map