SQLiteConnection - «System.OverflowException», но работает - PullRequest
0 голосов
/ 19 октября 2019

Я использую SQLiteConnection и ObservableCollection для поиска в базе данных, а затем возвращаю коллекцию в элементе управления ListView. Я, кстати, новичок в wpf и c #, но учусь.

Этот код работает и делает именно то, что я хочу, но это не моя проблема. Я не уверен, что это правильный путь.

using (SQLiteConnection connect = new SQLiteConnection(@"Data Source=" + dbPath))
{
    connect.Open();
    using (SQLiteCommand cmd = connect.CreateCommand())
    {
        cmd.CommandText = @"SELECT " + cols + " FROM Files" + query;
        cmd.CommandType = CommandType.Text;
        using (SQLiteDataAdapter ad = new SQLiteDataAdapter())
        {
            ad.SelectCommand = cmd;
            using (DataSet ds = new DataSet())
            {
                ad.Fill(ds);
                using (DataTable dtt = ds.Tables[0])
                {
                    List<SearchResultItem> lst = dtt.DataTableToList<SearchResultItem>();
                    return lst;
                }
            }
        }
    }
}

Это код, который я использую для обновления элемента управления ListView, и, возможно, проблему можно найти здесь:

try
{
    List<SearchResultItem> files = SQLiteHelper.Search(search);
    SearchResultList = new ObservableCollection<SearchResultItem>();
    foreach (var file in files)
    {
        SearchResultList.Add(file);
    }
    this.DataContext = this;
}
catch (Exception e)
{
    MessageBox.Show(e.Message);
}

Моя проблема заключается в чтении консоли вывода во время выполнения. Там я получаю исключение, которое я не понимаю. Он повторяет количество X раз в зависимости от того, сколько строк возвращено.

Это отображается в выходных данных каждый раз, когда я использую приведенный выше код. Мое приложение работает так, как я хочу, я просто хочу понять, почему оно выдает мне это сообщение в консоли. Может ли кто-нибудь любезно объяснить это мне, чтобы я мог узнать, почему, и, возможно, есть лучший способ написать код? :)

Возникло исключение:

'System.OverflowException' в mscorlib.dll

Редактировать: мне удалось найти корень причины, по которой ясамостоятельно. В моем классе SearchResultItem:

public int isize { get; set; }

Решение: Изменение типа на long или double, если я подозреваю, что значения слишком велики. Спасибо за информацию, Перкинс.

public long isize { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...