例如,目前我有一个 Web 应用程序,它需要 2 个不同的连接的 2 个 Web 表单
public static string storedProcName = "NameOfSomeStoredProc";
public string ConnString
{
get { return ConfigurationManager.ConnectionStrings["DbConn2"].ConnectionString; }
}
public string UserConnName
{
get { return string.Concat(ConfigurationManager.AppSettings["userConnName"], storedProcName); }
}
方法中的实际存储过程调用将如下所示我根据上面声明的静态存储过程名称传入存储过程名称..
为自己创建一个 Helper 类,您可以在要执行代码的类中调用类似以下内容
HelperClass.cs
public static DataSet ExecuteDataSet2(string sql, CommandType cmdType, params OracleParameter[] parameters)
{
using (DataSet ds = new DataSet())
using (OracleConnection connStr = new OracleConnection(ConfigurationManager.ConnectionStrings["DbConn2"].ConnectionString))
using (OracleCommand cmd = new OracleCommand(sql, connStr))
{
cmd.CommandType = cmdType;
cmd.CommandTimeout = 60 * 22;
foreach (var item in parameters)
{
cmd.Parameters.Add(item);
}
try
{
cmd.Connection.Open();
new OracleDataAdapter(cmd).Fill(ds);
}
catch (Exception ex)
{
utilities.SendErrorEmails(ex);
throw ex;
}
return ds;
}
}
例如,如果您有 2 个不同的数据库连接字符串,您的 Web.Config 将如下所示。您将创建与上述相同的方法,将其称为 ExecuteDataSet1.... 并将 DbConn2 更改为 DbConn 并在 Public string ConnString 在你的其他类中将 DbConn2 更改为 DbConn,或者有一个复选框,根据选择,你可以存储 botn ConnString get retrun .. 非常直接地调用你的另一个 ConnString2
<connectionStrings>
<add name="DbConn" connectionString="Data Source={0};User Id={1};Password={2};" />
<add name="DbConn2" connectionString="Data Source={0};User Id={1};Password={2};" />
</connectionStrings>
<appSettings>
<add key="userConnName" value="NameOfOracleUser." />
</appSettings>
//密切注意 NameOfOracleUser. 中的 .,这取决于您如何设置程序,您将拥有要执行的 OracleDbUserName.StoredProcedure 名称。请注意 Populate_DataGrin 方法中的我正在传递 UserConnName 和string.Concat 将从这里获取 storedProcName
public static string storedProcName = "NameOfSomeStoredProc"; 就像一个魅力,如果你有一个存储过程名称的下拉菜单要运行..它会通过根据下拉选择文本分配名称来工作。..
最后但并非最不重要的一点是,调用 ExecuteDataSet2 的方法/事件看起来像这样
private void Populate_DataGrin(int intMonth, string strLocation)
{
dtSomeDataTable = OracleDBHelper.ExecuteDataSet2(UserConnName, CommandType.StoredProcedure
, new OracleParameter("var_IntMonth", intMonth)
, new OracleParameter("var_StrLocation", strLocation)
, new OracleParameter
{
ParameterName = "p_cursor"
,
OracleDbType = OracleDbType.RefCursor
,
Direction = ParameterDirection.Output
}
).Tables[0];
YourDataGrid.DataSource = null;
YourDataGrid.DataSource = dtSomeDataTable;
YourDataGrid.DataBind();
}