在.NET中用儲存過程執行SQL語句

iDotNetSpace發表於2010-04-20
儲存過程:是一組為了完成特定功能的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

}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-660262/,如需轉載,請註明出處,否則將追究法律責任。

相關文章