C#開發之調用資料庫預存程序

來源:互聯網
上載者:User

本例應用在WebService中,該WebService根據實際需要建立資料庫連接,訪問資料庫,調用預存程序,得到結果。比如調用預存程序進行使用者的驗證登入。
預存程序詳細見地址:http://blog.csdn.net/whuarui2010/article/details/7768061

WebService的Web方法如下:

[WebMethod]        public string JiaoJingTongWebService(string functionName,string xmlString) {            string s = "2";            try {                Functions ff = new Functions();                s = ff.DataProcessing(functionName, xmlString);            } catch(Exception e) {                            }            return functionName+"_"+s;        }

說明:
JiaoJingTongWebService是函數名稱,調用該webservice時必須傳遞兩個參數,一個是functionname,用來指示操作那個預存程序,xmlstring是傳遞的xml字串格式的資料。該函數傳回值string類型,0-2的取值分別表示操作成功,失敗,網路問題。
DataProcessing方法用來處理該xml字串資料,為預存程序參數做準備。

Function類如下:

public class Functions {        Dictionary<string, string> dictionary ;        GetDataFromDB getDatas ;        string outputparameter;        //用戶端傳遞的資料整理         public string DataProcessing(string functionName,string xmlString){           dictionary = new Dictionary<string, string>();           getDatas = new GetDataFromDB();           dictionary = XMLStringParsing(xmlString);            //調用預存程序方法           outputparameter= getDatas.GetServiceDatas(functionName, dictionary);           return outputparameter;        }        //XML字串解析         Dictionary<string,string> XMLStringParsing(string xml) {             Dictionary<string, string> dic = new Dictionary<string, string>();             XmlDocument doc = new XmlDocument();             doc.LoadXml(xml);             XmlNodeList xxList = doc.GetElementsByTagName("Element");             foreach(XmlNode xnode in xxList) {                 XmlNodeList childList = xnode.ChildNodes;                 foreach(XmlNode node in childList){                 string nodeName = node.Name;                 switch(nodeName) {                     //使用者基本資料                     case "ID":                         dic.Add("@in_id", node.InnerText);                         break;                     case "UserName":                         dic.Add("@in_username", node.InnerText);                         break;                     case "Password":                         dic.Add("@in_password", node.InnerText);                         break;                     case "OldPassword":                         dic.Add("@in_oldpassword", node.InnerText);                         break;                 }                 }             }             return dic;         }

說明:
dictionary用來準備預存程序的參數;
XMLStringParsing函數用來解析所有的xml字串,解析的有用的東西添加到dictionary中。
GetServiceDatas方法用來建立資料連線並調用預存程序。
GetServiceDatas方法如下:

 
public string GetServiceDatas(string functionName,Dictionary<string,string> dic){                   //使用者登入資料庫連接、Windows登入串連  //string DBConnStr = "uid=MARTIN; password=; Database=JiaoJingTong;Server=MARTIN;Connect Timeout=30";   string DBConnStr = "Database=JiaoJingTong;Server=MARTIN;Integrated Security=True; Connect Timeout=30";                           SqlConnection myConnection = new SqlConnection(DBConnStr);                if(myConnection.State != ConnectionState.Open) {                    myConnection.Open();                }                //調用資料庫的預存程序                SqlCommand myCommand = new SqlCommand(functionName, myConnection);                myCommand.CommandType = CommandType.StoredProcedure;                //添加輸入查詢參數、賦予值                foreach(var item in dic) {                    string k = item.Key.ToString();                    string v = item.Value.ToString();                    myCommand.Parameters.Add(k, SqlDbType.VarChar);                    myCommand.Parameters[k].Value = v;                }                               //添加輸出參數                myCommand.Parameters.Add("@out_parameter", SqlDbType.Int);                myCommand.Parameters["@out_parameter"].Direction = ParameterDirection.Output;                SqlDataAdapter DataAdapter = new SqlDataAdapter();                DataSet MyDataSet = new DataSet();                //myCommand.ExecuteNonQuery();                DataAdapter.SelectCommand = myCommand;                if(MyDataSet != null) {                    DataAdapter.Fill(MyDataSet, "table");                }                               //得到預存程序輸出參數               string out_parameter = myCommand.Parameters["@out_parameter"].Value.ToString();                     if(myConnection.State == ConnectionState.Open) {                    myConnection.Close();                }            return out_parameter;        }  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.