Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 索引超出了c中数组的界限_C#_Mysql_Arrays - Fatal编程技术网

C# 索引超出了c中数组的界限

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

我想将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行,则仍然会失败-最好使用列表:


我觉得这很可疑:

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,我不明白你在说什么。算什么?什么价值?