• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Adodb.Command 平時很少注意到的一個參數

    發表于:2007-06-30來源:作者:點擊數: 標簽:
    我們在 ASP 中調用 SQL Server 的存儲過程時,如果使用 Adodb.Command 對象,通常使用如下的代碼: dim cmd, rs set cmd = Server.CreateObject(ADODB.Command) cmd.ActiveConnection = conn cmd.CommandType = adCmdStoredProc cmd.CommandText = TestProc c
    我們在 ASP 中調用 SQL Server 的存儲過程時,如果使用 Adodb.Command 對象,通常使用如下的代碼:

    dim cmd, rs

    set cmd = Server.CreateObject("ADODB.Command")
    cmd.ActiveConnection = conn
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "TestProc"
    cmd.Parameters.Append cmd.CreateParameter("@a" , adInteger, adParamInput, 4, 1)
    cmd.Parameters.Append cmd.CreateParameter("@b" , adVarChar, adParamInput, 50, ‘’b‘’)
    ...
    set rs = cmd.Execute

    今天我在調試一個程序的時候發現, ASP 頁面上提示某個參數沒有賦值, 而實際上我沒賦值的卻是另一個參數。 于是我打開 Sql Server 的事件探察器, 執行了一遍程序, 捕捉到實際上 ASP 發送給 Sql Server 的 SQL 語句實際上是如下的形式:

    execute TestProc 1, ‘’b‘’, ....

    原因現在很明顯了,ADO 引擎沒有把對存儲過程的調用翻譯為完整的語法, 而是采用了上述簡寫方式, 這樣,當中間某個參數丟失的時候, 就有可能因為錯位而誤判為另一個參數丟失。
    然后我查了一下 Command 對象的屬性, 加了如下一句:

    cmd.NamedParameters = true

    也就是說指定要使用顯式命名的變量形式, 然后再執行一邊程序, 發現事件探察器中捕捉到的語句變成了:

    exec TestProc @a = 1, @b = ‘’b‘’, ...

    報錯的參數也是正確的。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>