Как мне заполнить ListView данными из базы данных SQLite - PullRequest
1 голос
/ 11 июня 2019

Я создаю кроссплатформенное мобильное приложение с формами Xamarin.Проблема, с которой я сейчас застрял, заключается в следующем: у меня есть страница, на которой я хочу отобразить информацию из базы данных в виде ListView на странице.Также в базе данных sqlite есть две таблицы.

  1. Сначала я создал переопределение метода OnAppearing для страницы, чтобы данные отображались при появлении страницы.

  2. Затем внутри этого я открыл соединение sqlite следующим образом:

    using(SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
    {
      //about to put the code here in the next step
    }
    
  3. Затем внутри этого я попытался создать таблицу из базы данных.например (под «ModelName» я имею в виду имя класса, в котором хранится модель, соответствующая данным в базе данных sqlite)

    conn.CreateTable<ModelName>
    
  4. , а затем попытался использовать запроса затем установите его как ItemSource для ListView следующим образом:

    ListViewName.ItemSource = conn.Query<ModelName>("SELECT * FROM databaseTableName;");
    
  5. На внешнем интерфейсе я установил привязку данных следующим образом.

    <ListView x:Name="ListViewName">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell Text="{Binding ModelName}" Detail="{Binding ModelName}"/>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    

Примечание. Я также пытался установить привязку следующим образом

Text="{Binding ColumnNameFromTable}"

, когда я запускаю ее, я получаю сообщение об ошибке, в котором говорится, что таблицане существует, но у меня есть база данных sqlite в проекте (в папке активов проекта android и в папке ресурсов проекта iOS), и таблица есть.Так что я не знаю, где я иду не так

Также, чтобы ответить на вопрос о том, что

(App.DatabaseLocation)

имеет следующие значения в MainActivity.cs и AppDelegate.cs соответственно

//in MainActivity.cs
string dbName = "DatabaseName.db";
string folderPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
string fullPath = Path.Combine(folderPath, dbName);
LoadApplication(new App(fullPath));
//in AppDelegate.cs
string dbName = "DatabaseName.db";
string folderPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),"..", "Library");
string fullPath = Path.Combine(folderPath, dbName);
LoadApplication(new App(fullPath));

Я ценю любую помощь всем, кто мудрее меня.Спасибо, что нашли время, чтобы прочитать и, возможно, ответить на мой вопрос.Я должен тебе мою вечную благодарность!

1 Ответ

1 голос
/ 11 июня 2019

Если вы используете Xamarin Forms, вам не нужно ничего устанавливать для локальной базы данных в MainActivity.cs и AppDelegate.cs. Изучите это руководство, которое лучше объяснит, как использовать sqllite в Xamarin Forms. https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/databases

Простой пример кода можно найти здесь: https://github.com/xamarin/xamarin-forms-samples/tree/master/Todo В этом примере извлекаются данные в виде списка, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...