提供给SQLite中的INSERT命令的参数不足

时间:2019-06-10 07:21:37

标签: c# sqlite dapper

我正在尝试将程序连接到SQLite数据库,我希望它每次用户登录时都在DB中添加一行,我正在使用Dapper ORM。

我已经检查了databse行的名称和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 个答案:

答案 0 :(得分:1)

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;}