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