[英]Index was outside the bounds of the array in c#
我想将MySqlDataReader读取的值插入到数组中。但是却出现异常“索引在数组的边界之外”。 这是我的代码,
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,那仍然会失败-最好使用List<string>
:
List<string> data = new List<string>();
while (dtr.Read())
{
data.Add(dtr.GetValue(0).ToString()); // Or call GetString
}
尝试稍微清理一下代码,然后使用动态调整大小的List<T>
,您可以在其中添加元素:
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.