乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      LoadRunner調(diào)用Oracle存儲(chǔ)過程

       昵稱10504424 2013-12-10

      為了測(cè)試這個(gè)存儲(chǔ)過程,我遙了一圈去做這個(gè)事情,這里說一下我自己接受到任務(wù)和自己開始是怎么想的。

      方法一:

      一開始我想著可以使用C#直接去調(diào)用存儲(chǔ)過程,然后用Loadrunner調(diào)用C#的dll去測(cè)試,后來發(fā)現(xiàn)找不到LoadRunner怎樣直接調(diào)用C#寫的dll;可是dll存儲(chǔ)過程都已經(jīng)寫好,不可能推倒重新用其他的方式去做,由于任務(wù)時(shí)間比較緊,就山寨的用C#寫了個(gè) .exe 去調(diào)用 dll,完成后執(zhí)行,印象是:數(shù)據(jù)庫(kù)跟本一點(diǎn)壓力都沒有,可是負(fù)載機(jī)都已經(jīng) 100%了,并且這種做法得需要在每臺(tái)負(fù)載機(jī)都安裝一個(gè)oracle 客戶端,要不訪問不了,負(fù)載機(jī)有 30臺(tái),每臺(tái)都去安裝一編,我倒!

      方法二:

      最后想到一種方法,寫一個(gè)WebService 去調(diào)用Dll,Loadrunner再去調(diào)用WebService去進(jìn)行測(cè)試。(這種做法是不是很笨?有沒有其他更好的方法,請(qǐng)留言給我?。?/a>


      下面就把整個(gè)過程詳細(xì)列一下,其實(shí)這個(gè)之前也都有做過,但由于沒有記錄到博客,全忘記了,重寫是多么的痛苦,血的教訓(xùn)說明:寫博客還是有必需的!

      Step1:編寫訪問存儲(chǔ)過程的dll

      復(fù)制代碼
      using System;
      using System.Collections.Generic;
      using System.Data;
      using System.Data.OracleClient;
      using System.Linq;
      using System.Text;
      
      namespace PaysysInterfaceTest
      {
          public class PaysysBase
          {
              public OracleConnection conn = null;
              public OracleCommand cmd = null;
      
              /// <summary>
              /// 數(shù)據(jù)庫(kù)初始化
              /// </summary>
              /// <param name="DataSource">數(shù)據(jù)庫(kù)源(Orlacle Client下的tnsnames.ora配置</param>
              /// <param name="DataUserId">數(shù)據(jù)庫(kù)登錄名</param>
              /// <param name="DataPassword">數(shù)據(jù)庫(kù)登錄密碼</param>
              /// <returns></returns>
              public int PaysysInit(string DataSource, string DataUserId, string DataPassword)
              {
                  var mConn = string.Format("Data Source={0};User Id={1};Password={2};", DataSource, DataUserId, DataPassword);
                  conn = new OracleConnection(mConn);
                  try
                  {
                      conn.Open();
                      cmd = new OracleCommand();
                      cmd.Connection = conn;
                  }
                  catch (Exception ex)
                  {
                      return 0;
                  }
                  return 1;
              }
      
              /// <summary>
              /// 調(diào)用的存儲(chǔ)過程
              /// </summary>
              /// <param name="interfaceName">存儲(chǔ)過程名稱</param>
              /// <returns></returns>
              public int CallInterface(string interfaceName)
              {
                  var nResult = 0;
                  var queryString = interfaceName;
                  cmd.CommandType = CommandType.StoredProcedure;
                  cmd.CommandText = queryString;
      
                  try
                  {
                      cmd.ExecuteNonQuery();
                      Console.WriteLine("Query Success!!");
                      nResult = Convert.ToInt32(cmd.Parameters["result"].Value);
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine("Query Error!!\r\n" + ex.Message);
                      nResult = Convert.ToInt32(cmd.Parameters["result"].Value); ;
                  }
                  finally
                  {
                      cmd.Clone();
                      conn.Close();
                      Console.WriteLine("Close Db");
                  }
                  return nResult;
              }
          }
      
          public class PlayerLogin : PaysysBase
          {
      public string s_account = ""; public string s_password = "";
      /// <summary> /// 存儲(chǔ)過程初始化參數(shù) /// </summary> /// <param name="account">用戶賬號(hào)</param> /// <param name="password">用戶密碼</param> public void LoginInit(string account, string password) { s_account = account; s_password = password; InitParam(); } /// <summary> /// 初始化信息 /// </summary> private void InitParam() { //反回值 cmd.Parameters.Add("result", OracleType.Float); cmd.Parameters["result"].Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add("s_account", OracleType.VarChar); cmd.Parameters["s_account"].Direction = ParameterDirection.Input; cmd.Parameters["s_account"].Value = s_account; cmd.Parameters.Add("s_password", OracleType.VarChar); cmd.Parameters["s_password"].Direction = ParameterDirection.Input; cmd.Parameters["s_password"].Value = s_password;
      //==================out================== cmd.Parameters.Add("d_login_time", OracleType.DateTime); cmd.Parameters["d_login_time"].Direction = ParameterDirection.Output; cmd.Parameters.Add("d_last_login_time", OracleType.DateTime); cmd.Parameters["d_last_login_time"].Direction = ParameterDirection.Output; cmd.Parameters.Add("d_last_logout_time", OracleType.DateTime); cmd.Parameters["d_last_logout_time"].Direction = ParameterDirection.Output; } /// <summary> /// 調(diào)用執(zhí)行存儲(chǔ)過程 /// </summary> /// <returns></returns> public int LoginInterface() { return CallInterface("player.login"); } } public class PlayerLogout : PaysysBase {
      public string s_account = "";
      public void LogoutInit(string account) { s_account = account; InitParam(); } private void InitParam() { //反回值 cmd.Parameters.Add("result", OracleType.Float); cmd.Parameters["result"].Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add("s_account", OracleType.VarChar); cmd.Parameters["s_account"].Direction = ParameterDirection.Input; cmd.Parameters["s_account"].Value = s_account; } public int LogoutInterface() { return CallInterface("player.logout"); } } }
      復(fù)制代碼

      遇到問題:

      1、在編寫login的接口時(shí),因?yàn)橹怀跏蓟薎nput的參數(shù),還以為不需要Output的參數(shù),所以導(dǎo)致調(diào)用的時(shí)候一直出現(xiàn)參數(shù)缺少的問題。入?yún)⒑统鰠⒍夹枰睿?/a>

      Setp2:WebServices調(diào)用dll

      1、新建工程:

      2、新建好工程后添加剛剛寫好的dll

      3、WebService調(diào)用代碼

      之后就可以調(diào)試一下了!

      Setp3:部署到IIS(可以查看我之前的一編博客,是一樣的)

      http://www.cnblogs.com/Martin_Q/archive/2010/12/06/1897614.html

      調(diào)試結(jié)果

      遇到問題:

      這里遇到一個(gè)很糟糕的問題,使用IIS在調(diào)用到:conn.Open() 的時(shí)候出現(xiàn)一個(gè)錯(cuò)誤:system.data.oracleclient 需要 oracle 客戶端軟件 8.1.7 或更高版本。

      這個(gè)問題一定要值得注意,開始我以為是iis沒有權(quán)限訪問oracle目錄,我為什么會(huì)這么認(rèn)為呢?因?yàn)槲覟榱瞬檫@個(gè)問題,我專門寫了一個(gè).exe 去執(zhí)行調(diào)用,exe應(yīng)用程序執(zhí)行成功,iis出錯(cuò)!

      原來問題是由于我安裝的oracle客戶端為簡(jiǎn)易版本,很多很多的dll都沒有。可以網(wǎng)上找一下:10201_client_win32.zip 些版本client,當(dāng)然還有其他的權(quán)限問題!這里沒遇到就不談了

      Setp4:使用LoadRunner調(diào)用WebServices

      1、Loadrunner新建WebService

      2、點(diǎn)ManageServices 添加你的WebService地址

      3、添加WebService 調(diào)用接口

      搭建的地址為:http://10.20.87.62:81/Service.asmx 為什么后面需要手工加一個(gè):?WSDL 呢?(知道的同學(xué)說一下!)

      4、添加成功

      5、添加對(duì)應(yīng)的存儲(chǔ)過程

      6、添加成功后Action代碼

      輸出結(jié)果:

      All:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas./soap/envelope/" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:xsd="http://www./2001/XMLSchema"><soap:Body><PaysysLoginResponse xmlns="http:///"><PaysysLoginResult>1</PaysysLoginResult></PaysysLoginResponse></soap:Body></soap:Envelope>

      LoginResult:1

      這一步之后,大家應(yīng)該如何進(jìn)行下一步了!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多