簡體   English   中英

索引在C#中超出數組的范圍

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM