C# 索引超出了c中数组的界限
我想将MySqlDataReader读取值插入数组。但我得到的异常索引超出了数组的边界。这是我的密码C# 索引超出了c中数组的界限,c#,mysql,arrays,C#,Mysql,Arrays,我想将MySqlDataReader读取值插入数组。但我得到的异常索引超出了数组的边界。这是我的密码 string[] a = new string[1000]; string myconstring = "SERVER=localhost;" + "DATABASE=alicosms;" + "UID=root;" + "PASSWORD=;"; MySqlConnection mycon = new MySqlConnection(mycon
string[] a = new string[1000];
string myconstring = "SERVER=localhost;" + "DATABASE=alicosms;" + "UID=root;" + "PASSWORD=;";
MySqlConnection mycon = new MySqlConnection(myconstring);
string sql = "SELECT flag FROM sms_data_bankasia group by flag";
MySqlCommand comd = mycon.CreateCommand();
comd.CommandText = sql;
mycon.Open();
MySqlDataReader dtr = comd.ExecuteReader();
count = 0;
int i = 0;
while (dtr.Read())
{
a[i] = dtr.GetValue(i).ToString();
i++;
}
我能做什么。有人能帮我吗?我觉得这很可疑:
a[i] = dtr.GetValue(i).ToString();
这意味着您正在获取第0行的第0列、第1行的第1列、第2行的第2列等等。。。但您只有一个列标志
我猜你的意思是:
a[i] = dtr.GetValue(0).ToString();
但如果行数超过1000行,则仍然会失败-最好使用列表:
我觉得这很可疑:
a[i] = dtr.GetValue(i).ToString();
这意味着您正在获取第0行的第0列、第1行的第1列、第2行的第2列等等。。。但您只有一个列标志
我猜你的意思是:
a[i] = dtr.GetValue(0).ToString();
但如果行数超过1000行,则仍然会失败-最好使用列表:
尝试稍微清理一下代码,并使用可添加元素的动态调整列表:
var result = new List<string>();
var myconstring = "SERVER=localhost;DATABASE=alicosms;UID=root;PASSWORD=;";
using (var con = new MySqlConnection(myconstring))
using (var cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = "SELECT flag FROM sms_data_bankasia group by flag";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
result.Add(reader.GetString(reader.GetOrdinal("flag")));
}
}
}
string[] a = result.ToArray();
尝试稍微清理一下代码,并使用可添加元素的动态调整列表:
var result = new List<string>();
var myconstring = "SERVER=localhost;DATABASE=alicosms;UID=root;PASSWORD=;";
using (var con = new MySqlConnection(myconstring))
using (var cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = "SELECT flag FROM sms_data_bankasia group by flag";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
result.Add(reader.GetString(reader.GetOrdinal("flag")));
}
}
}
string[] a = result.ToArray();
点击你的名字进入你的个人资料,然后你会看到你问过的所有问题。然后点击打开问题,并通过点击答案左边的勾号接受有帮助的答案。@evione现在我接受一些答案,所以我认为你必须帮助我。@sumona太棒了!但是我看到Jon已经帮了你,你也已经接受了他的答案:2个答案是可以接受的,那么怎么办呢?点击你的名字进入你的个人资料,然后你会看到你问的所有问题。然后点击打开问题,并通过点击答案左边的勾号接受有帮助的答案。@evione现在我接受一些答案,所以我认为你必须帮助我。@sumona太棒了!但我看到Jon已经帮了你,你也已经接受了他的答案:两个答案都可以接受,那怎么办?如果我想使用数组,那怎么办@Jon?@sumona:嗯,我想问你为什么要先使用数组。。。但你可以随时打电话给名单上的ToArray。重要的是,数组在创建后总是有固定的大小,但不知道结果集中会有多少行@jon@sumona:如果列表是int类型,您的意思是什么?如果你想创建一个列表,你可能需要dtr.GetInt32。如果我想使用数组,那该怎么办@Jon?@sumona:嗯,我想问你为什么要先使用数组。。。但你可以随时打电话给名单上的ToArray。重要的是,数组在创建后总是有固定的大小,但不知道结果集中会有多少行@jon@sumona:如果列表是int类型,您的意思是什么?如果您想创建一个列表,您可能需要dtr.GetInt32。如果我只想使用数组,那么@darin?@sumona我该怎么做,请看我的代码示例的最后一行。它将列表转换为一个数组。@sumona,var是C 3.0中引入的一个关键字,允许您声明隐式类型的变量:如果您使用的是不支持该类型的旧.NET版本,只需将var替换为各自的类型:MySqlConnection、MySqlCommand、MySqlReader、,…它只提供数量。但我需要价值。那怎么办呢@darin?@sumona,我不明白你在说什么。算什么?什么的值?如果我只想使用数组,那么@darin?@sumona我该怎么做,看看我的代码示例的最后一行。它将列表转换为一个数组。@sumona,var是C 3.0中引入的一个关键字,允许您声明隐式类型的变量:如果您使用的是不支持该类型的旧.NET版本,只需将var替换为各自的类型:MySqlConnection、MySqlCommand、MySqlReader、,…它只提供数量。但我需要价值。那怎么办呢@darin?@sumona,我不明白你在说什么。算什么?什么价值?