C # читать MySql int поле вернуть неправильный номер - PullRequest
0 голосов
/ 27 мая 2019

Я пишу веб-страницу с использованием C # MVC5 и MySQL, когда я запрашиваю число из поля int, MySQL всегда возвращает неправильное число, я не могу найти какое-либо решение.

MySQL, например:

| Id | Type | Level | Parent_id |ChildrenCount |
| 1  | T    | 1     | 1         |3             |
| 2  | SC   | 2     | 1         |2             |
| 3  | SH   | 3     | 2         |1             |
| 4  | TK   | 4     | 3         |0             |
...

Я могу использовать sql показать их нормально.

Но C # не может.

Ниже приведен код C #.

public Item GetItem(int id, int level, int pos)
{
    Item item = new Item { Id = -1 };

    using (MySqlConnection con = new DBConnect().MySql())
    {
        string sql = $"SELECT * FROM item WHERE Parent_id={id} AND Level={level} LIMIT {pos}, 1;";
        using (MySqlCommand cmd = new MySqlCommand(sql, con))
        {
            con.Open();
            MySqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                item.Id = reader.GetInt32(0);
                item.Type = reader.GetString(1);
                item.Level = reader.GetInt32(2);
                item.ChildrenCount = reader.GetInt32(3);
            };
        }
    }
    return item;
}
public void GetItemList(int id, int level, int count, ref List<Item> pli, int initPos=0)
{
    int pos = 0;
    pos += initPos;
    Item item = GetItem(id, level, pos);

    if (item.Id == -1)
    {
        return;
    }

    pli.Add(item);

    // Here item.Level is wrong.

    if (pli.Count() < count)
    {
        if (item.ChildrenCount > 0)
        {
            int ChildPos = 0;
            int newLevel = item.Level + 1;
            GetItemList(item.Id, newLevel, count, ref pli, ChildPos);
        }
        else
        {
            int newPos = pos + 1;
            GetItemList(id, level, count, ref pli, newPos);
        }
    }
}

вызов по

public List<Item> GetInitItem(int id)
{
    List<Item> resItemList = new List<Item> { };
    GetItemList(id, level: 1, count: 50, pli: ref resItemList, initPos: 0);

    return resItemList;
}

с другой информацией все в порядке, неверен только столбец уровня, все возвращают 1.

Это результат на странице:

ID:6133   Type:T   Level:1   Count:744   
ID:6154   Type:SC   Level:1   Count:67 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...