C# 在C中从Mysql数据库获取数据到数组
嗨,我有一个数据库和用户数据,我需要这些数据得到我的数组在C与cyklus 此代码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
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]中的值。