xamarin sqlite SQLiteException: возле ")": синтаксическая ошибка добавить - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь изучить xaml и C #, используемые в формах Xamarin, и теперь я хочу реализовать функциональность SQLite. Я просто пытаюсь добавить значение в таблицу SQL, но получаю следующую ошибку:

Необработанное исключение:

SQLite.SQLiteException: near ")": произошла синтаксическая ошибка

Интерфейс подключения к моей базе данных выглядит следующим образом:

using SQLite;
namespace TestSQLite
{
    public interface IDatabaseConnection
    {
        SQLiteAsyncConnection GetConnection();
    }
}

Моя база данных для Android (iOS идентична) выглядит следующим образом:

using SQLite;
using System.IO;
using TestSQLite; 
using Xamarin.Forms;

[assembly: Dependency(typeof(DatabaseConnection))]

namespace TestSQLite
{
    public class DatabaseConnection : IDatabaseConnection
    {
        public SQLiteAsyncConnection GetConnection() 
        {
            var dbName = "TestDb.db3";
            var path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), dbName);

            return new SQLiteAsyncConnection(path);
        }
    }
}

Моя главная страница (тестовая страница) выглядит следующим образом:

using SQLite;
using Xamarin.Forms;

namespace TestSQLite
{
    public class ControlledDrugs
    {
        [PrimaryKey, AutoIncrement]
        public int Id { get; set; }
        public string Drug { get; set; }
        public double Volume { get; set; }
    }
    public class Users
    {
        [PrimaryKey, AutoIncrement]
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public partial class MainPage : ContentPage
    {
        private SQLiteAsyncConnection _connection;

        public MainPage()
        {
            InitializeComponent();
            _connection = DependencyService.Get<IDatabaseConnection>().GetConnection();
        }

        protected override async void OnAppearing()
        {
            await _connection.CreateTableAsync<ControlledDrugs>();
            await _connection.CreateTableAsync<Users>();

            var drugs = await _connection.Table<ControlledDrugs>().ToListAsync();
            Drugslistview.ItemsSource = drugs;

            var user = await _connection.Table<Users>().ToListAsync();
            Userlistview.ItemsSource = user;

            base.OnAppearing();
        }
        async void OnAdd(object sender, System.EventArgs e)
        {
            var user = UserInput.Text;
//The next step generates the error
            await _connection.InsertAsync(user);
        }

        void OnUpdate(object sender, System.EventArgs e)
        {

        }

        void OnDelete(object sender, System.EventArgs e)
        {

        }

    }
}

Как видите, я еще не успел обновить или удалить. Обучение через Youtube и фрагменты Stackoverflow мучительно медленное. Но эта ошибка поставила меня в тупик. Кроме того, у вас должен быть установлен пакет NuGet sqlite-net-pcl v1.5.166-beta, установленный Xamarin Visual Studio.

1 Ответ

0 голосов
/ 01 сентября 2018

вы пытаетесь вставить строку в таблицу User вместо объекта User

var user = UserInput.Text;
// user is just a string
await _connection.InsertAsync(user);

вместо этого вам нужно создать объект User

var user = new Users { Name = UserInput.Text };
await _connection.InsertAsync(user);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...