在ASP.NET中用存儲過程執(zhí)行SQL語句
更新時間:2010年04月25日 21:55:10 作者:
存儲過程:是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中。用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。存儲過程是數(shù)據(jù)庫中的一個重要對象,任何一個設(shè)計良好的數(shù)據(jù)庫應(yīng)用程序都應(yīng)該用到存儲過程。
存儲過程執(zhí)行效率比單獨的SQL語句效率高。
樣編寫存儲過程?存儲過程在SQL Server 2005對應(yīng)數(shù)據(jù)庫的可編程性目錄下。
比如,創(chuàng)建一個存儲過程
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
執(zhí)行定義好的存儲過程
exec procNewsSelectNewNews
存儲過程返回的是一張表
public DataTable test(string procName)
{
DataTable dt=new DataTable();
cmd=new SqlCommand(procName,GetConn()); //數(shù)據(jù)庫連接和連接開閉,都放在了GetConn()方法中
cmd.CommandType=CommandType.StoredProcedure; //定義SQL語句命令類型為存儲過程
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection));//方法將SQL語句發(fā)送給SqlConnection并生產(chǎn)一個SqlDataReader類對象,該SqlDataReader對象包含SQL命令返回的數(shù)據(jù)
{ dt.Load(sdr); //load查詢dataread查詢的結(jié)果 }
return dt;
}
當(dāng)一個項目中既要用到SQL語句又要用到存儲過程的時候,而執(zhí)行SQL語句和執(zhí)行存儲過程的方法都差不多,就是相差一個CommandType類型,所以如果有這樣的情況,我們可以重構(gòu)關(guān)于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
}
樣編寫存儲過程?存儲過程在SQL Server 2005對應(yīng)數(shù)據(jù)庫的可編程性目錄下。
比如,創(chuàng)建一個存儲過程
復(fù)制代碼 代碼如下:
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
執(zhí)行定義好的存儲過程
exec procNewsSelectNewNews
存儲過程返回的是一張表
復(fù)制代碼 代碼如下:
public DataTable test(string procName)
{
DataTable dt=new DataTable();
cmd=new SqlCommand(procName,GetConn()); //數(shù)據(jù)庫連接和連接開閉,都放在了GetConn()方法中
cmd.CommandType=CommandType.StoredProcedure; //定義SQL語句命令類型為存儲過程
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection));//方法將SQL語句發(fā)送給SqlConnection并生產(chǎn)一個SqlDataReader類對象,該SqlDataReader對象包含SQL命令返回的數(shù)據(jù)
{ dt.Load(sdr); //load查詢dataread查詢的結(jié)果 }
return dt;
}
當(dāng)一個項目中既要用到SQL語句又要用到存儲過程的時候,而執(zhí)行SQL語句和執(zhí)行存儲過程的方法都差不多,就是相差一個CommandType類型,所以如果有這樣的情況,我們可以重構(gòu)關(guān)于SQL語句和存儲過程這兩個方法
復(fù)制代碼 代碼如下:
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語句或存儲過程的方法了
比如:存儲過程
復(fù)制代碼 代碼如下:
public DataTable SelectNewNews()
{
return sqlhelper.ExecuteQuery(“存儲過程名”,CommandType.StoredProcedure)
}
SQL語句
復(fù)制代碼 代碼如下:
public DataTable SelectAll()
{
DataTable dt=new DataTable();
string sql=”select * from news”;
dt=sqlhelper.ExecuteQuery(sql,CommandType.Text);·
return dt
}
相關(guān)文章
asp.net中IDataParameter調(diào)用存儲過程的實現(xiàn)方法
這篇文章主要介紹了asp.net中IDataParameter調(diào)用存儲過程的實現(xiàn)方法,在asp.net數(shù)據(jù)庫程序設(shè)計中非常具有實用價值,需要的朋友可以參考下2014-09-09
Asp.net移除Server,X-Powered-By和X-AspNet-Version頭
這篇文章主要介紹了Asp.net移除Server,?X-Powered-By,?和X-AspNet-Version頭,移除X-AspNet-Version很簡單,只需要在Web.config中增加相應(yīng)配置節(jié),感興趣的朋友一起看看吧2024-02-02
在 .NET 中 使用 ANTLR4構(gòu)建語法分析器的方法
本文將介紹如何在 .NET 中使用 ANTLR4 構(gòu)建語法分析器,本文不會深入講解 ANTLR4 的語法規(guī)則,相關(guān)內(nèi)容可參考 ANTLR4 的官方文檔或其他資料,本文將涵蓋以下內(nèi)容:ANTLR4 的開發(fā)環(huán)境搭建、語法規(guī)則編寫、語法分析器生成以及語法分析器的使用,感興趣的朋友一起看看吧2025-04-04
在.NET?Core?Web?API中完美配置Swagger文檔的方法
這篇文章主要介紹了在.NET?Core?Web?API中完美配置Swagger文檔的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-12-12
ASP.NET延遲調(diào)用或多次調(diào)用第三方Web?API服務(wù)
這篇文章介紹了ASP.NET延遲調(diào)用或多次調(diào)用第三方Web?API服務(wù)的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10
使用最小?WEB?API?實現(xiàn)文件上傳會遇到的坑
這篇文章主要介紹分享使用最小?WEB?API?實現(xiàn)文件上傳時會遇到的坑,在使用?.NET?6?的最小?WEB?API?來實現(xiàn)相同功能時,總是會意外地遇到了不少坑,下面我們就來看看這些坑都是怎么處理的吧,需要的朋友可以參考下2022-02-02

