C# ';查询值和目标字段的数量不相同;
这是我的数据库类中的一段代码:C# ';查询值和目标字段的数量不相同;,c#,database,ms-access,C#,Database,Ms Access,这是我的数据库类中的一段代码: public static int ChangeTable(string strSql , string strFileName) { OleDbConnection c = new OleDbConnection(); c = MakeConnection(strFileName); OleDbCommand cmd = new OleDbCommand(strSql, c); int nAffectedRows = cmd.Execut
public static int ChangeTable(string strSql , string strFileName)
{
OleDbConnection c = new OleDbConnection();
c = MakeConnection(strFileName);
OleDbCommand cmd = new OleDbCommand(strSql, c);
int nAffectedRows = cmd.ExecuteNonQuery();
c.Close();
return nAffectedRows;
}
它在我的用户类中使用如下:
public int AddUser(string fname, string lname , string email, string password)
{
string strSql = "INSERT INTO [users] ([email] , [password] , [fname] , [lname]) VALUES ('" +
email + "''" + password + "''" + fname + "''" + lname + "');";
string dbname = "DataBase.mdb";
int didItWork = Dbase.ChangeTable(strSql, dbname);
return didItWork;
}
无论何时运行,都会弹出此错误:
“System.Data.OleDb.OLEDBEException:'查询值和目标字段的数目不相同。”
而且它总是将命令“int naffectrows=cmd.ExecuteNonQuery();”的背景色设置为
我不知道怎么了,这是我的第一个网站项目,我真的需要一些帮助
p、 我正在使用asp.net(这是一个学校作业)。问题是插入的标题与此处传递的值数量不匹配:
string strSql = "INSERT INTO [users] ([email] , [password] , [fname] , [lname]) VALUES ('" +
email + "''" + password + "''" + fname + "''" + lname + "');";
正确,在值之间添加逗号:
string strSql = "INSERT INTO [users] ([email] , [password] , [fname] , [lname]) VALUES ('" +
email + "','" + password + "','" + fname + "','" + lname + "');";
更好的方法是使用参数:
string strSql = "INSERT INTO [users]([email],[password],[fname],[lname])
VALUES (@email,@password,@fname,@lname);";
cmd.CommandText = strSql;
// add named parameters
cmd.Parameters.AddRange(new OleDbParameter[]
{
new OleDbParameter("@email", ...),
new OleDbParameter("@password", ...),
...
});
// execute
cmd.ExecuteNonQuery();
值之间缺少逗号。最好的选择是使用参数来防止Sql注入