在 ASP.NET 數據庫開發中,調用存儲過程是常見且關鍵的操作。本文將詳細介紹如何使用 IDataParameter 接口配合 SqlParameter 實現存儲過程的調用,包含輸入參數傳遞、輸出參數接收以及封裝通用執行方法的完整代碼示例。
public string GenerateExamePaper(string paperType, string driverID, string MacAddr)
{
// 初始化參數數組,包含 3 個輸入參數和 1 個輸出參數
IDataParameter[] iData = new SqlParameter[4];
iData[0] = new SqlParameter("@paperType", paperType);
iData[1] = new SqlParameter("@driverID", driverID);
iData[2] = new SqlParameter("@MacAddr", MacAddr);
// 配置輸出參數 @sReturn
iData[3] = new SqlParameter("@sReturn", SqlDbType.Char, 50,
ParameterDirection.Output, false, 0, 0, string.Empty, DataRowVersion.Default, null);
string result = "";
// 執行存儲過程並獲取輸出參數值
DbHelperSQL.RunProcedureParOut("Pro_GenerateExamePaper", iData, out result);
return result;
}
////// 執行存儲過程,返回影響行數並獲取輸出參數 /// public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected, out string outputValue) { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand command = BuildIntCommand(connection, storedProcName, parameters); rowsAffected = command.ExecuteNonQuery(); // 獲取返回值和輸出參數 int returnValue = (int)command.Parameters["ReturnValue"].Value; outputValue = command.Parameters["@sReturn"].Value.ToString(); return returnValue; } } ////// 構建命令對象的輔助方法 /// private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters) { SqlCommand command = new SqlCommand(storedProcName, connection); command.CommandType = CommandType.StoredProcedure; // 添加參數 foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } // 添加返回值參數 SqlParameter returnParam = new SqlParameter("ReturnValue", SqlDbType.Int); returnParam.Direction = ParameterDirection.ReturnValue; command.Parameters.Add(returnParam); return command; }
ParameterDirection.OutputSqlDbType 和長度,如 SqlDbType.Char, 50ParameterDirection.ReturnValue 獲取using 確保連接正確釋放掌握這種模式後,您可以輕鬆應對各種存儲過程調用場景,顯著提升數據庫操作的安全性和可維護性。