Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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中从Mysql数据库获取数据到数组_C#_Mysql - Fatal编程技术网

C# 在C中从Mysql数据库获取数据到数组

C# 在C中从Mysql数据库获取数据到数组,c#,mysql,C#,Mysql,嗨,我有一个数据库和用户数据,我需要这些数据得到我的数组在C与cyklus 此代码 MySqlCommand cmd = connection.CreateCommand(); cmd.CommandText = "SELECT * FROM usersdata WHERE user_id='1'"; MySqlDataReader dataReader = cmd.ExecuteReader(); int i = 0; while (dataReader.Read()) { userd

嗨,我有一个数据库和用户数据,我需要这些数据得到我的数组在C与cyklus

此代码

MySqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "SELECT * FROM usersdata WHERE user_id='1'";
MySqlDataReader dataReader = cmd.ExecuteReader();
int i = 0;
while (dataReader.Read())
{
    userdata[i] = Convert.ToInt32(dataReader[i]);
    i++;               


 }


 dataReader.Close();
但这项工作只有一个,id为0后什么都没有,有人帮我吗?非常感谢


我需要数据读取器读取所有列,并从列0向用户数据[0]提供信息,从列1向用户数据[1]提供信息……数据读取器正在从当前记录的字段索引中读取。您需要将dataReader[i]更改为dataReader[0],但要继续增加userdata变量的索引

它应该是这样的:

while (dataReader.Read())
{
    userdata[i++] = Convert.ToInt32(dataReader[0]); //i++ can be included right in the array index.
}
请试试这个

while (dataReader.Read())
{
    userdata[i] = Convert.ToInt32(dataReader[0]);
    i++;
    userdata[i] = Convert.ToString(dataReader[1]);//Change the datatype base on the data type of the field in the table
    i++;               


}
问题是dataReader.Read意味着转到数据库并获取下一行。听起来像是要从一行中获取所有数据

我认为你想要的更像:

dataReader.Read();
for (int i=0; i</*number of columns that you have*/; i++) {
    userData[i] = Convert.ToInt32(dataReader[i]);
}

请注意,dataReader.Read只被调用一次,因此您只能看到第一行中的数据,即user\u id=1的行。注意:我假设只有一行是正确的,您的问题/注释暗示了这一点,但没有明确说明。

您确定您的用户\u id='0'返回数据吗?你不需要我来增加它。Read方法逐行读取数据。在您的示例中,这仅读取第一行的第一列、第二行的第二列、第三行的第三列等。。您还可以使用SqlDataReader的GetXXX方法。这不是对您问题的回答,但您应该使用dataReader.GetInt32i,而不是Convert.ToInt32dataReader[i]。此代码将从第0行读取列0,然后从第1行读取列1,从第2行读取列2。。。你想让它做什么?每行读一列?或者读取每行中的所有列?读取用户为_id='1'的行中的所有列您是否希望从数据库中只返回一行?你期待什么栏目?它们的类型是什么?是否要将dataReader[1]中的值分配给另一个变量?否则,您将覆盖dataReader[0]中的值。