Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在整个应用程序中使用变量?_C#_Asp.net - Fatal编程技术网

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
,从而允许在整个处理程序的作用域内使用该变量