AddOutParameter引發類型問題

來源:互聯網
上載者:User

         

 1Database db = DatabaseFactory.CreateDatabase(connString);
 2          DbCommand dbCommand = db.GetStoredProcCommand(sp); 
 3
 4          db.AddOutParameter(dbCommand, "@RetCode", DbType.String, 4);  <---這裡總是報錯,類型轉換有問題
 5          db.AddInParameter(dbCommand, "@Room", DbType.Int32, XXXX);
 6
 7
 8          db.ExecuteNonQuery(dbCommand); 
 9
10          return db.GetParameterValue(dbCommand, "@RetCode").ToString(); 
11

    預存程序中有一個輸出參數 varchar(4)
    用企業庫(Enterprise Library - June 2005)來調用這個預存程序,其中有一行代碼如下:
    db.AddOutParameter(dbCommand, "@RetCode", DbType.String, 4); 

    那哪裡出現問題了呢?

    Google半天結果,原因也許是DbType.String 引出的原因。

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatadbtypeclasstopic.asp

    DbType.String 
    A type representing Unicode character strings.

    DbType.AnsiString
    A variable-length stream of non-Unicode characters ranging between 1 and 8,000 characters.

    如果你的參數類型是 varchar 你應該用 DbType.AnsiString ,如果是 nvarchar 應該用 DbType.String。

    不過由於這個原因拋出 “當前命令發生了嚴重錯誤。應放棄任何可能產生的結果。 ”
   “常規網路錯誤。請檢查您的網路文檔。 ” 這樣的異常,則太容易誤導尋
   我即改為:  

   SqlParameter sqlParameter= new SqlParameter("@RetCode",SqlDbType.varchar,4);

    結果OK

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.