C# 如何在整个应用程序中使用变量?
如何将返回的C# 如何在整个应用程序中使用变量?,c#,asp.net,C#,Asp.net,如何将返回的memberID变量插入到另一个SQL存储过程中 protected void imgBtnActivate_onClick(object sender, EventArgs e) { // Inserts Member record try { Database db = DatabaseFactory.CreateDatabase(ConfigManager.AppSettings["ConnectionString.Dev"]);
memberID
变量插入到另一个SQL存储过程中
protected void imgBtnActivate_onClick(object sender, EventArgs e)
{
// Inserts Member record
try
{
Database db = DatabaseFactory.CreateDatabase(ConfigManager.AppSettings["ConnectionString.Dev"]);
DbCommand dbCommand = db.GetStoredProcCommand("dbo.ins_member_p");
db.AddInParameter(dbCommand, "@FirstName", DbType.String, txtFirstName.Text);
db.AddInParameter(dbCommand, "@LastName", DbType.String, txtLastName.Text);
db.ExecuteNonQuery(dbCommand);
int memberID = Convert.ToInt32(db.GetParameterValue(dbCommand, "MemberNewID").ToString());
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Notify Policy");
}
// Insert Member Email
try
{
Database db = DatabaseFactory.CreateDatabase(ConfigManager.AppSettings["ConnectionString.Dev"]);
DbCommand dbCommand = db.GetStoredProcCommand("[ins_MemberEmail_p]");
dbCommand.Transaction = dbTran;
db.AddInParameter(dbCommand, "MemberID", DbType.Int32, memberID);
db.AddInParameter(dbCommand, "SourceID", DBType.In32, 33);
db.AddInParameter(dbCommand, "EmailAddress", DbType.String, EncryptedEmailAddress);
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Notify Policy");
}
}
像这样更改它,将变量的声明移出{},在它之前
protected void imgBtnActivate_onClick(object sender, EventArgs e)
{
int memberID;
// Inserts Member record
try
{
Database db = DatabaseFactory.CreateDatabase(ConfigManager.AppSettings["ConnectionString.Dev"]);
DbCommand dbCommand = db.GetStoredProcCommand("dbo.ins_member_p");
db.AddInParameter(dbCommand, "@FirstName", DbType.String, txtFirstName.Text);
db.AddInParameter(dbCommand, "@LastName", DbType.String, txtLastName.Text);
db.ExecuteNonQuery(dbCommand);
memberID = Convert.ToInt32(db.GetParameterValue(dbCommand, "MemberNewID").ToString());
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Notify Policy");
}
像这样更改它,将变量的声明移出{},在它之前
protected void imgBtnActivate_onClick(object sender, EventArgs e)
{
int memberID;
// Inserts Member record
try
{
Database db = DatabaseFactory.CreateDatabase(ConfigManager.AppSettings["ConnectionString.Dev"]);
DbCommand dbCommand = db.GetStoredProcCommand("dbo.ins_member_p");
db.AddInParameter(dbCommand, "@FirstName", DbType.String, txtFirstName.Text);
db.AddInParameter(dbCommand, "@LastName", DbType.String, txtLastName.Text);
db.ExecuteNonQuery(dbCommand);
memberID = Convert.ToInt32(db.GetParameterValue(dbCommand, "MemberNewID").ToString());
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Notify Policy");
}
只需在第一个
try…catch
块外定义int memberID
,以便在第二个try…catch
块内可见:
protected void imgBtnActivate_onClick(object sender, EventArgs e)
{
// define it here
int memberID = -1:
// Inserts Member record
try
{
......
db.ExecuteNonQuery(dbCommand);
memberID = Convert.ToInt32(db.GetParameterValue(dbCommand, "MemberNewID").ToString());
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Notify Policy");
}
// Insert Member Email
try
{
......
// then it'll be visible and useable here!
db.AddInParameter(dbCommand, "MemberID", DbType.Int32, memberID);
.....
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Notify Policy");
}
}
只需在第一个
try…catch
块外定义int memberID
,以便在第二个try…catch
块内可见:
protected void imgBtnActivate_onClick(object sender, EventArgs e)
{
// define it here
int memberID = -1:
// Inserts Member record
try
{
......
db.ExecuteNonQuery(dbCommand);
memberID = Convert.ToInt32(db.GetParameterValue(dbCommand, "MemberNewID").ToString());
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Notify Policy");
}
// Insert Member Email
try
{
......
// then it'll be visible and useable here!
db.AddInParameter(dbCommand, "MemberID", DbType.Int32, memberID);
.....
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Notify Policy");
}
}
首先,我建议您稍微拆分一下代码。您正在控制事件处理程序中执行大量逻辑(包括数据访问,可能还有一些域逻辑) 但问题的直接解决办法是在
try/catch
块之外删除memberID
protected void imgBtnActivate_onClick(object sender, EventArgs e)
{
int memberID;
// Inserts Member record
try
{
Database db = DatabaseFactory.CreateDatabase(ConfigManager.AppSettings["ConnectionString.Dev"]);
DbCommand dbCommand = db.GetStoredProcCommand("dbo.ins_member_p");
db.AddInParameter(dbCommand, "@FirstName", DbType.String, txtFirstName.Text);
db.AddInParameter(dbCommand, "@LastName", DbType.String, txtLastName.Text);
db.ExecuteNonQuery(dbCommand);
memberID = Convert.ToInt32(db.GetParameterValue(dbCommand, "MemberNewID").ToString());
}
// .... so on and so forth
按照上面的方法,您将在整个事件处理程序的作用域内拥有
memberID
,这反过来将允许您在整个处理程序的作用域中使用该变量。首先,我建议您稍微拆分代码。您正在控制事件处理程序中执行大量逻辑(包括数据访问,可能还有一些域逻辑)
但问题的直接解决办法是在try/catch
块之外删除memberID
protected void imgBtnActivate_onClick(object sender, EventArgs e)
{
int memberID;
// Inserts Member record
try
{
Database db = DatabaseFactory.CreateDatabase(ConfigManager.AppSettings["ConnectionString.Dev"]);
DbCommand dbCommand = db.GetStoredProcCommand("dbo.ins_member_p");
db.AddInParameter(dbCommand, "@FirstName", DbType.String, txtFirstName.Text);
db.AddInParameter(dbCommand, "@LastName", DbType.String, txtLastName.Text);
db.ExecuteNonQuery(dbCommand);
memberID = Convert.ToInt32(db.GetParameterValue(dbCommand, "MemberNewID").ToString());
}
// .... so on and so forth
上述方法将在整个事件处理程序的作用域内使用memberID
,从而允许在整个处理程序的作用域内使用该变量