无法创建没有列错误的表Xamarin SQLite
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法创建没有列错误的表Xamarin SQLite相关的知识,希望对你有一定的参考价值。
我正在尝试在Xamarin应用程序中使用本地SQLite数据库,我一直在关注本教程:https://docs.microsoft.com/en-us/xamarin/get-started/tutorials/local-database/?tabs=vswin
加载我正在对其进行测试的ListView页面时,总是会收到错误:System.AggregateException:'发生了一个或多个错误。 (无法创建没有列的表(“ TestApp1.Piece”是否具有公共属性?))
这里是适用的代码:
Piece.cs
namespace TestApp1
public class Piece
[PrimaryKey, AutoIncrement]
public int ID get; set;
public int PartNum get; set;
public string Catagory get; set;
public string Url get; set;
PieceDatabase.cs
namespace TestApp1
public class PieceDatabase
readonly SQLiteAsyncConnection _database;
public PieceDatabase(string dbPath)
_database = new SQLiteAsyncConnection(dbPath);
_database.CreateTableAsync<Piece>().Wait();
public Task<List<Piece>> GetPieceAsync()
return _database.Table<Piece>().ToListAsync();
public Task<int> SavePieceAsync(Piece temp)
return _database.InsertAsync(temp);
App.xaml.cs
namespace TestApp1
public partial class App : Application
static PieceDatabase database;
public static PieceDatabase PieceDatabase
get
if (database == null)
database = new PieceDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "pieces.db3"));
return database;
public App()
InitializeComponent();
MainPage = new NavigationPage(new Page1());
protected override void OnStart()
// Handle when your app starts
protected override void OnSleep()
// Handle when your app sleeps
protected override void OnResume()
// Handle when your app resumes
DatabaseTest.xaml.cs
namespace TestApp1
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class DatabaseTest : ContentPage
protected override async void OnAppearing()
base.OnAppearing();
/** The error does not occur if I add a piece here, but I'm trying to figure out why that is
await App.PieceDatabase.SavePieceAsync(new Piece
Catagory = "Beams",
PartNum = 1,
Url = "whatever.com"
); */
List<Piece> test = await App.PieceDatabase.GetPieceAsync();
listView.ItemsSource = test;
public DatabaseTest()
InitializeComponent();
async void Handle_ItemTapped(object sender, ItemTappedEventArgs e)
if (e.Item == null)
return;
await DisplayAlert("Item Tapped", "An item was tapped.", "OK");
//Deselect Item
((ListView)sender).SelectedItem = null;
DatabaseTest.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="TestApp1.DatabaseTest">
<StackLayout Margin="20,35,20,20">
<ListView x:Name="listView">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="Binding PartNum"
Detail="Binding Url"
/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
这是我第一次与Xamarin合作,因此感谢您的帮助或解释。
[我做了一个有关从sqlite数据库加载数据的示例,您是从github下载的,没有问题,我使用sqlite-net-pcl 1.6.258-beta版本和xamarin.forms 3.4版本。
https://github.com/CherryBu/Sqlite-Listview
您还可以浏览以下有关详细信息的文章:
https://www.c-sharpcorner.com/article/xamarin-forms-sqlite-database-crud-operations2/
以上是关于无法创建没有列错误的表Xamarin SQLite的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms Sqlite(有时)在更新后获取错误结果
在 Xamarin 中使用带有 SQLite 的类中的 CreateTable 时,有没有一种方法可以为该类中的表使用不同的名称?
android.database.sqlite.SQLiteException:没有这样的表:
Netbeans 连接到 SQLite 时出现 SQLite 错误或缺少数据库(没有这样的表)
Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常