SgDotNet
Singapore Professional .NET User Group -For Cool Developers

C# casting problem object to string[]

rated by 0 users
This post has 1 Reply | 2 Followers

Top 500 Contributor
Posts 6
plsaiuser Posted: 01-15-2006 10:43 AM

Greetings All,

Can anybody pls help in the following.
i have written 2 functions getRecordList and GetRowsList. i am getting casting problem vaResultSet = (string[])GetRowsList(ref SqlDataReader, nStart, nrows); in getRecordList function. can anybody pls have a look at my code pls give your valuable suggestions and mistakes in code. its some what urjent and really it will be very greatful for your earliest replies. thanks in advance.

protected string[] getRecordList(StringBuilder vaInput)

{

setCallerDetails();

SqlCommand sqlCommand;

SqlDataReader SqlDataReader;


string[] vaResultSet;

string[] vaOutput = new string[4];

string szSql;

long nStart;

long nrows;

long nRecordCount = 0;

short i;


try

{

if (Information.IsArray(vaInput))

{

szSql = vaInput[0].ToString();

nStart = vaInput[1];

nrows = vaInput[2];

}

else

{

szSql = vaInput.ToString();

nrows = - 1;

nStart = 1;

}

string StrLastSQL = szSql;

if (openDatabase() == C_RET_SUCCESS)

{

if (Information.Err().Number == 0)

{

if (szSql.Length> 0)

{

sqlCommand = new SqlCommand(szSql, sqlConnection);

sqlCommand.CommandTimeout = iCommandTimeOut;

SqlDataReader = sqlCommand.ExecuteReader();


vaResultSet = (string[])GetRowsList(ref SqlDataReader, nStart, nrows);

if (Information.IsArray(vaResultSet))

{

for (i = 0; i <= Information.UBound((System.Array) vaResultSet, 1); i++)

{

if (Information.IsArray(vaResultSet))

{

nRecordCount = nRecordCount + vaResultSet[1];

}

}

}

else

{

nRecordCount = 0;

}

vaOutput[0] = "E" + Information.Err().Number;

try

{

if (Information.IsArray(vaResultSet))

{

if (Information.UBound((System.Array) vaResultSet, 1) == 0)

{

vaOutput[1] = vaResultSet[0][0].ToString();

}

else

{

vaOutput[1] = vaResultSet.ToString();

}

}

}

catch (Exception ex)

{

HandleError(ex, C_CLASS_NAME, true);

}

vaOutput[2] = nRecordCount.ToString();

vaOutput[3] = Interaction.IIf(! Information.IsNothing(vaResultSet), Interaction.IIf(Information.IsArray(vaResultSet), Information.UBound((System.Array) vaResultSet, 1), 0), 0).ToString();

SqlDataReader.Close();


}

else

{

vaOutput[0] = "EC01";

}

}

else

{

vaOutput[0] = "E" + Information.Err().Number;

}

closeDatabase();

}

}

catch (Exception ex)

{

vaOutput[0] = C_RET_FAIL;

HandleError(ex, C_CLASS_NAME, true);

}

return vaOutput;

}

**************************************

protected object GetRowsList(ref SqlDataReader oReader, long nStart, long nRows)

{

int nCols;

long rCnt = 0;

long nbegin = 0;

long nEnd = 0;


ArrayList vaResultSet = new ArrayList();

bool bAll = false;

bool bExit = false;

//sai need to check above 2 variables false or true

try

{

do

{

rCnt = 0;

nCols = oReader.FieldCount;

if (nStart == 1 && nRows == - 1)

{

nbegin = 0;

bAll = true;

}

else if (nStart > 0 && nRows == - 1)

{

nbegin = nStart - 1;

bAll = true;

}

else if (nStart > 0 && nRows > 0)

{

nbegin = nStart - 1;

nEnd = nbegin + nRows - 1;

}

ArrayList vaArray = new ArrayList();

while (oReader.Read())

{

if (! bExit)

{

if (nbegin <= rCnt &&(nEnd >= rCnt || bAll == true))

{

try

{

object[] values = new object[nCols-1];

oReader.GetValues(values);

vaArray.Add(values);

}

catch (Exception ex)

{

HandleError(ex, C_CLASS_NAME,false);

//sai need to check, boolean is true or false

}

}

else if ((bAll == false) &&(nEnd < rCnt))

{

bExit = true;

}

}

rCnt = rCnt + 1;

}


object[] vaOut = new object[] { vaArray, rCnt };

vaResultSet.Add(vaOut);

} while (oReader.NextResult());

}

catch (Exception ex)

{

MessageBox.Show(ex.Message.ToString());

HandleError(ex, C_CLASS_NAME,false);

}

return vaResultSet;

}



Thanks in advance

Sai

Top 10 Contributor
Posts 2,260
Can you explain what Information.IsArray() is trying to do when vaInput is a StringBuilder? On top of that the code is way too convoluted to meet its purposes, but I do not have time to delve on that.

However, you are trying to cast what you return, an ArrayList, into a array of strings (string[]). An ArrayList is a dynamically sizing collection class that can contain objects of any type. It itself is an object and not an array.

You'd probably want to make use of its ToArray() method.

The melody of logic will always play out the truth. ~ Narumi Ayumu, Spiral

Page 1 of 1 (2 items) | RSS
Copyright SgDotNet 2004-2008
Powered by Community Server (Commercial Edition), by Telligent Systems