[英]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.