Use of unassigned local variable

  • Thread starter Thread starter Mike P
  • Start date Start date
M

Mike P

I keep getting the error 'Use of unassigned local variable' in my code,
which I have used before and it works fine :

SqlTransaction Trans1, Trans2;
SqlConnection objConnectionDeactivateInvisilinkLNX,
objConnectionDeactivateInvisilinkSQLSRVXwireless;
SqlCommand objCommandDeactivateInvisilinkLNX,
objCommandDeactivateInvisilinkSQLSRVXwireless;


try
{
//Trans 1 - COM4S_CARDS
objConnectionDeactivateInvisilinkLNX = new
SqlConnection(ConfigurationSettings.AppSettings["strConnectLNXTest"]);
objConnectionDeactivateInvisilinkLNX.Open();

objCommandDeactivateInvisilinkLNX =
objConnectionDeactivateInvisilinkLNX.CreateCommand();

Trans1 =
objConnectionDeactivateInvisilinkLNX.BeginTransaction(IsolationLevel.Rea
dCommitted);

objCommandDeactivateInvisilinkLNX.Connection =
objConnectionDeactivateInvisilinkLNX;
objCommandDeactivateInvisilinkLNX.Transaction = Trans1;

//Trans 2 - NUM_TABLE
objConnectionDeactivateInvisilinkSQLSRVXwireless = new
SqlConnection(ConfigurationSettings.AppSettings["strConnectSQLSRVXwirele
ssTest"]);
objConnectionDeactivateInvisilinkSQLSRVXwireless.Open();

objCommandDeactivateInvisilinkSQLSRVXwireless =
objConnectionDeactivateInvisilinkSQLSRVXwireless.CreateCommand();

Trans2 =
objConnectionDeactivateInvisilinkSQLSRVXwireless.BeginTransaction(Isolat
ionLevel.ReadCommitted);

objCommandDeactivateInvisilinkSQLSRVXwireless.Connection =
objConnectionDeactivateInvisilinkSQLSRVXwireless;
objCommandDeactivateInvisilinkSQLSRVXwireless.Transaction = Trans2;
}
catch
{
lblDeactivateInvisilinkResult.Text = "Could Not Connect To Database -
please try again later";
}

try
{
//1 - COM4S_CARDS
string strUpdateCOM4SCards;

strUpdateCOM4SCards = "UPDATE COM4S_CARDS ";
strUpdateCOM4SCards += "SET STATE = 'N', ALLOW_TOGGLE = 0,
SECONDARY_OLI = NULL, G_BIT = 0 ";
strUpdateCOM4SCards += "WHERE SERIAL = " +
Convert.ToInt32(ViewState["Serial"]);

objCommandDeactivateInvisilinkLNX.CommandText = strUpdateCOM4SCards;
objCommandDeactivateInvisilinkLNX.ExecuteNonQuery();


//2 - NUM_TABLE
string strUpdateNumTable, strCLI;

strCLI = Convert.ToString("07059" + ViewState["Serial"]);

strUpdateNumTable = "DELETE FROM NUM_TABLE ";
strUpdateNumTable += "WHERE CLI = '" + strCLI + "'";

objCommandDeactivateInvisilinkSQLSRVXwireless.CommandText =
strUpdateNumTable;
objCommandDeactivateInvisilinkSQLSRVXwireless.ExecuteNonQuery();

Trans1.Commit();
Trans2.Commit();
objConnectionDeactivateInvisilinkLNX.Close();
objConnectionDeactivateInvisilinkSQLSRVXwireless.Close();
lblDeactivateInvisilinkResult.Text = "Number Successfully Activated";
}
catch
{
Trans1.Rollback();
Trans2.Rollback();
objConnectionDeactivateInvisilinkLNX.Close();
objConnectionDeactivateInvisilinkSQLSRVXwireless.Close();
lblDeactivateInvisilinkResult.Text = "Database Error - please try
again later";
}


Can anybody help me out with this?


Thanks,

Mike
 
I believe the problem is because you're using the TransX objects in the
second try block. If try block 1 throws an exception, there is no guarantee
that the TransX objects are initialized.

Initialize them to NULL in the definition block and you'll resolve the
compiler issue, but you should also check the variables in the code prior to
using them.


Arild

Mike P said:
I keep getting the error 'Use of unassigned local variable' in my code,
which I have used before and it works fine :

SqlTransaction Trans1, Trans2;
SqlConnection objConnectionDeactivateInvisilinkLNX,
objConnectionDeactivateInvisilinkSQLSRVXwireless;
SqlCommand objCommandDeactivateInvisilinkLNX,
objCommandDeactivateInvisilinkSQLSRVXwireless;


try
{
//Trans 1 - COM4S_CARDS
objConnectionDeactivateInvisilinkLNX = new
SqlConnection(ConfigurationSettings.AppSettings["strConnectLNXTest"]);
objConnectionDeactivateInvisilinkLNX.Open();

objCommandDeactivateInvisilinkLNX =
objConnectionDeactivateInvisilinkLNX.CreateCommand();

Trans1 =
objConnectionDeactivateInvisilinkLNX.BeginTransaction(IsolationLevel.Rea
dCommitted);

objCommandDeactivateInvisilinkLNX.Connection =
objConnectionDeactivateInvisilinkLNX;
objCommandDeactivateInvisilinkLNX.Transaction = Trans1;

//Trans 2 - NUM_TABLE
objConnectionDeactivateInvisilinkSQLSRVXwireless = new
SqlConnection(ConfigurationSettings.AppSettings["strConnectSQLSRVXwirele
ssTest"]);
objConnectionDeactivateInvisilinkSQLSRVXwireless.Open();

objCommandDeactivateInvisilinkSQLSRVXwireless =
objConnectionDeactivateInvisilinkSQLSRVXwireless.CreateCommand();

Trans2 =
objConnectionDeactivateInvisilinkSQLSRVXwireless.BeginTransaction(Isolat
ionLevel.ReadCommitted);

objCommandDeactivateInvisilinkSQLSRVXwireless.Connection =
objConnectionDeactivateInvisilinkSQLSRVXwireless;
objCommandDeactivateInvisilinkSQLSRVXwireless.Transaction = Trans2;
}
catch
{
lblDeactivateInvisilinkResult.Text = "Could Not Connect To Database -
please try again later";
}

try
{
//1 - COM4S_CARDS
string strUpdateCOM4SCards;

strUpdateCOM4SCards = "UPDATE COM4S_CARDS ";
strUpdateCOM4SCards += "SET STATE = 'N', ALLOW_TOGGLE = 0,
SECONDARY_OLI = NULL, G_BIT = 0 ";
strUpdateCOM4SCards += "WHERE SERIAL = " +
Convert.ToInt32(ViewState["Serial"]);

objCommandDeactivateInvisilinkLNX.CommandText = strUpdateCOM4SCards;
objCommandDeactivateInvisilinkLNX.ExecuteNonQuery();


//2 - NUM_TABLE
string strUpdateNumTable, strCLI;

strCLI = Convert.ToString("07059" + ViewState["Serial"]);

strUpdateNumTable = "DELETE FROM NUM_TABLE ";
strUpdateNumTable += "WHERE CLI = '" + strCLI + "'";

objCommandDeactivateInvisilinkSQLSRVXwireless.CommandText =
strUpdateNumTable;
objCommandDeactivateInvisilinkSQLSRVXwireless.ExecuteNonQuery();

Trans1.Commit();
Trans2.Commit();
objConnectionDeactivateInvisilinkLNX.Close();
objConnectionDeactivateInvisilinkSQLSRVXwireless.Close();
lblDeactivateInvisilinkResult.Text = "Number Successfully Activated";
}
catch
{
Trans1.Rollback();
Trans2.Rollback();
objConnectionDeactivateInvisilinkLNX.Close();
objConnectionDeactivateInvisilinkSQLSRVXwireless.Close();
lblDeactivateInvisilinkResult.Text = "Database Error - please try
again later";
}


Can anybody help me out with this?


Thanks,

Mike
 
Thanks Arild. I can avoid this error by using return in the first catch
block, so if there is an error in the first block, the second block
doesn't get reached.

Cheers,

Mike
 
Mike said:
I keep getting the error 'Use of unassigned local variable' in my
code, which I have used before and it works fine :

This can be easily avoided by declaring your variable and setting it to
null.

--
There are 10 kinds of people. Those who understand binary and those who
don't.

http://code.acadx.com
(Pull the pin to reply)
 
Back
Top