У меня есть приложение, использующее соединение MySQL .Net, но по какой-то причине у меня возникают проблемы при разборе результатов, чтобы вернуть их,IndexOutOfRangeException Метательное для струнного .split C#
public NameValueCollection[] query(string query)
{
connect();
NameValueCollection[] resultSet;
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = query;
connection.Open();
Reader = command.ExecuteReader();
string theserows = "";
while (Reader.Read())
{
for (int i = 0; i < Reader.FieldCount; i++){
theserows += Reader.GetName(i)+"="+Reader.GetValue(i).ToString() + ",";
Count = i;
}
theserows += "\n";
}
connection.Close();
string[] results = theserows.Split(new char[] {'\n'}, StringSplitOptions.RemoveEmptyEntries);
int countResultRows = 0;
resultSet = new NameValueCollection[Count];
foreach (string s in results)
{
resultSet[countResultRows] = new NameValueCollection();
string[] result = s.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries);
foreach (string col in results)
{
if (string.IsNullOrEmpty(col))
continue;
string[] kv = col.Split('=');
resultSet[countResultRows].Add(kv[0], kv[1]);
}
countResultRows++;
}
return resultSet;
}
theserows = "site_id=1,\n"
В этом, но я имеют исключение, указанное на string[] result = s.Split(',');
, за исключением IndexOutOfRangeException
Может ли кто-нибудь дать понять, почему эта ошибка возникла?
На другой ноте причина я читаю все это затем здание NameValueCollection, я хочу, чтобы добавить систему регистрации, которая регистрирует полный запрос, и это приводит к
EDIT ::
«счетчик» (в нижнем регистре) изменено на countResultRows
CallStack
HTML5Streamer.exe!HTML5Streamer.Classes.MySQL.query(string query) Line 53 C#
HTML5Streamer.exe!HTML5Streamer.Classes.Query.getSiteId(string domain) Line 17 + 0x10 bytes C#
HTML5Streamer.exe!HTML5Streamer.Classes.Query.checkUserPass(string username, string password, string domain) Line 31 + 0xb bytes C#
HTML5Streamer.exe!HTML5Streamer.Classes.Service.ProccessAdminRequest(System.Net.HttpListenerContext context) Line 239 + 0xd9 bytes C#
HTML5Streamer.exe!HTML5Streamer.Classes.Service.ProcessRequest(System.Net.HttpListenerContext context) Line 176 + 0xb bytes C#
HTML5Streamer.exe!HTML5Streamer.Classes.Service.ListenerCallback(System.IAsyncResult result) Line 150 + 0xb bytes C#
http://i.stack.imgur.com/EST4w.png линия 52 является resultSet[countResultRows] = new NameValueCollection();
функция начинается в строке 26 заканчивается в 65
IndexOutOfRangeException должны быть брошены на 'Resultset [число] = новый NameValueCollection()' – Leri
Попробуйте использовать 'String [] = результаты theserows.Split ('\ п', StringSplitOptions.RemoveEmptyEntries); 'и' string [] result = s.Split (',', StringSplitOptions.RemoveEmptyEntries) 'и сообщить нам, что происходит ... – Marco
Это ваш настоящий код? Наличие переменных с именем «count» и «Count» - действительно плохая идея. –