我正在尝试将程序连接到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上失败。执行时提供的参数不足错误
答案 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;}
)