Недостаточно параметров для команды INSERT в SQLite - PullRequest
1 голос
/ 10 июня 2019

Я пытаюсь подключить свою программу к БД SQLite, я хочу, чтобы она добавляла строку в БД каждый раз, когда пользователь входит в систему, я использую Dapper ORM.

Я уже проверил имена строк базы данных и параметры класса User, я попытался отправить оба параметра obj и uUser в качестве параметров. Я также пытался написать простое тестовое приложение, и там работает та же команда.

public class User
    {
        // Parameter def
        public string stClass;
        public string stUsername;
        public string LoginDate;
        private string stPassword;
    }

    // Saves the user to the DB
    public static void SaveData(Object obj, string stpTableName)
    {
        // First case (Irrelevant)

        case(USERS):
        {
            User uUser = new User();
            uUser = (User)obj;

            // Opens and closes the connection to the DB
            using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
            {
                cnn.Execute("insert into Users (stUsername, stClass, LoginDate) values (@stUsername, @stClass, @LoginDate)", uUser);
            }
        }

    }

Сбой программы на cnn. Выполнить с ошибкой «Недостаточно параметров».

1 Ответ

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

Dapper любит свойства. Попробуйте:

public class User
{
    // Parameter def
    public string Class {get;set;}
    public string Username {get;set;}
    public DateTime LoginDate {get;set;}
    private string Password {get;set;} // mutters something about "salted hashes"
}
...
cnn.Execute("insert into Users (stUsername, stClass, LoginDate) values (@Username, @Class, @LoginDate)", uUser);

(у вас нет для изменения имен ... но я просто не могу набрать public string stClass {get;set;} без вздрагивания)

...