Я пишу веб-страницу с использованием 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