国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#存儲過程

2019-11-17 03:16:04
字體:
來源:轉載
供稿:網友

C#存儲過程

using System;using System.Data;using System.Data.SqlClient;

這是命名空間,不用多講解了吧。

public class DAL //定義一個類{ string cnstr="data source=.;initial catalog=company;persist security info=False;user id=sa;pwd=sa;";

//定義連接數據庫的連接字符串 PRivate SqlCommand cm=new SqlCommand(); //建立Command對象

//定義一個全局的Command 對象。

public SqlCommand getCommand //返回Command對象 { get {return cm;} }

public DAL() //構造函數 { cm.Connection=new SqlConnection(cnstr); }

下面是添加存儲過程參數的部分

//--------------------------------------------------------- //添加參數 //---------------------------------------------------------

如果要執行新的存儲過程,需要先清除以前添加的存儲過程的參數

//清除參數 public void ClearParameter() {cm.Parameters.Clear();}

這是一個通用的添加參數的函數。

//全部的參數 public void addNewParameter(string ParameterName,string ParameterValue,SqlDbType sqlType,int size,string Direction) { cm.Parameters.Add(ParameterName,sqlType,size); //添加存儲過程的參數 cm.Parameters[ParameterName].Value=ParameterValue; //負值 cm.Parameters[ParameterName].Direction=getDirection(Direction);//設置方向 }

//方向為輸入的 public void addNewParameter(string ParameterName,string ParameterValue,SqlDbType sqlType,int size) { cm.Parameters.Add(ParameterName,sqlType,size); //添加存儲過程的參數 cm.Parameters[ParameterName].Value=ParameterValue; //負值 //cm.Parameters[ParameterName].Direction=getDirection(Direction);//設置方向 }

下面是把常用的幾個數據類型提出來,方便操作。

這是專門添加int數據類型的參數

//添加int型的參數 public void addNewParameter(string ParameterName,int ParameterValue) { cm.Parameters.Add(ParameterName,SqlDbType.Int,4); //添加存儲過程的參數 cm.Parameters[ParameterName].Value=ParameterValue; //負值 //設置方向取默認值——輸入 }

這是專門添加nvarChar數據類型的參數

//添加nvarChar型的參數 public void addNewParameter(string ParameterName,string ParameterValue,int size) { cm.Parameters.Add(ParameterName,SqlDbType.NVarChar,size); //添加存儲過程的參數 cm.Parameters[ParameterName].Value=ParameterValue; //負值 //設置方向取默認值——輸入的 }

這是專門添加Bit數據類型的參數

//添加bit型的參數 public void addNewParameter(string ParameterName,bool ParameterValue) { cm.Parameters.Add(ParameterName,SqlDbType.Bit); //添加存儲過程的參數 cm.Parameters[ParameterName].Value=ParameterValue; //負值 //設置方向取默認值——輸入的 }

如果你還有其他的數據類型也是經常使用的,可以再加相應的函數。

參數加完了,下面就可以運行存儲過程了

//------------------------------------------------------------- // 運行、返回記錄集 //-------------------------------------------------------------

通過傳入的存儲過程的名稱來執行存儲過程,把返回的記錄集放到DataSet里面,如果是多個記錄集的話,分別放在Table[0]、Table[1]、Table[2]……

//運行存儲過程返回DataSet public DataSet runSPDataSet(string StoredProcedureName) { //cm.Connection=new SqlConnection(cnstr); cm.CommandText=StoredProcedureName; cm.CommandType=CommandType.StoredProcedure; try { SqlDataAdapter da=new SqlDataAdapter(cm); DataSet DS=new DataSet(); da.Fill(DS); return DS; } catch(Exception ex) { throw ex; } finally { cm.Connection.Close(); } }

通過傳入的存儲過程的名稱來執行存儲過程,把返回的第一個記錄集里的第一條記錄放在Object 數組里。多用在顯示詳細信息里,因為這種情況大多都是只用一條記錄的。如果是空的話返回strValue[0]="null" 。

//運行存儲過程返回第一條記錄的數組public Object[] runSPItems(string StoredProcedureName){Object[] strValue=new Object[1];cm.CommandText=StoredProcedureName;cm.CommandType=CommandType.StoredProcedure;try{cm.Connection.Open();SqlDataReader r = cm.ExecuteReader(CommandBehavior.CloseConnection);if (r.Read()){strValue=new Object[r.FieldCount];r.GetValues(strValue);}else{strValue[0]="null";}r.Close();}catch(Exception ex){throw ex;}finally{cm.Connection.Close();}return strValue;}

如果你想用 DataReader 的話,可以用這個函數返回Command對象,然后用Command.ExecuteReader,最后再用Command.Connection.Close(),關閉連接。應該還有更好的方法吧,總之我是很少用DataReader 的。

//加入存儲過程需要的參數,返回commandpublic SqlCommand getSPCommand(string StoredProcedureName){//cm.Connection=new SqlConnection(cnstr);cm.CommandText=StoredProcedureName;cm.CommandType=CommandType.StoredProcedure;return cm;}

如果只是添加記錄不需要返回記錄集的話,可以用下面的函數。

//運行存儲過程 不返回記錄集,用于添加記錄,或者是通過存儲過程的參數返回數據。public string runSP(string ParameterName){//cm.Connection=new SqlConnection(cnstr);cm.CommandType=CommandType.StoredProcedure;cm.CommandText=ParameterName;try{cm.Connection.Open();cm.ExecuteNonQuery();cm.Connection.Close();return "true";}catch(Exception ex){throw ex;}finally{cm.Connection.Close();}

}

存儲過程也執行完畢了,那如果有output類型的參數,要取回參數值怎么辦呢,那就寫個函數來實現吧。

//按序號返回參數值,一般在執行完存儲過程后使用 public string getParameter(int ParameterIndex) { return cm.Parameters[ParameterIndex].Value.ToString(); }

//按名稱返回參數值 public string getParameter(string ParameterName) { return cm.Parameters[ParameterName].Value.ToString(); }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桐城市| 江陵县| 镇坪县| 兴安盟| 德化县| 山东省| 平原县| 阜康市| 平邑县| 武安市| 金湖县| 阳新县| 旬邑县| 江门市| 吉木乃县| 凤台县| 调兵山市| 化隆| 保山市| 府谷县| 晴隆县| 特克斯县| 和静县| 全州县| 江都市| 安国市| 抚顺县| 曲沃县| 志丹县| 农安县| 闽侯县| 海南省| 峡江县| 双牌县| 金坛市| 泰顺县| 定州市| 枝江市| 斗六市| 成都市| 哈尔滨市|