C#Access数据库插入语法错误
我的insert语句出现语法错误,但找不到错误 这是我的方法C#Access数据库插入语法错误,c#,database,ms-access,C#,Database,Ms Access,我的insert语句出现语法错误,但找不到错误 这是我的方法 String sql = "insert into receivers (receiver_id, receiver_name, salary, team, forty_yard_dash, position, offense) " + "values" + "(@id, @name, @sala
String sql = "insert into receivers (receiver_id, receiver_name, salary, team, forty_yard_dash, position, offense) " +
"values" +
"(@id, @name, @salary, @team, @forty, @position, @offense)";
com = new OleDbCommand(sql, con);
com.Parameters.AddWithValue("@id", rec.id);
com.Parameters.AddWithValue("@name", rec.name);
com.Parameters.AddWithValue("@salary", rec.salary);
com.Parameters.AddWithValue("@team", rec.team);
com.Parameters.AddWithValue("@forty", rec.fortyYardDash);
com.Parameters.AddWithValue("@offense", rec.offenseDefense);
con.Open();
com.ExecuteNonQuery();
con.Close();
我的数据库如下所示:接收方id号
名称文本
工资编号
团队文本
四十码破折号
位置文本
是/否 任何帮助都将不胜感激 已经在评论中指出: 您需要为
位置添加参数
String sql = "insert into receivers (receiver_id, receiver_name, salary, team, forty_yard_dash, position, offense) " +
"values" +
"(@id, @name, @salary, @team, @forty, @position, @offense)";
com = new OleDbCommand(sql, con);
com.Parameters.AddWithValue("@id", rec.id);
com.Parameters.AddWithValue("@name", rec.name);
com.Parameters.AddWithValue("@salary", rec.salary);
com.Parameters.AddWithValue("@team", rec.team);
com.Parameters.AddWithValue("@forty", rec.fortyYardDash);
//new --> I am assuming the value for position comes from rec.position; change to correct source
com.Parameters.AddWithValue("@position", rec.position);
com.Parameters.AddWithValue("@offense", rec.offenseDefense);
con.Open();
com.ExecuteNonQuery();
con.Close();
如果没有您没有告诉我们的其他错误,这应该可以解决问题;) 除了缺少位置
的.Parameters.AddWithValue
语句外,另一个问题是位置
是Access SQL中的一个参数,必须在CommandText中用方括号括起来。我刚刚尝试了以下方法,效果很好:
使用(var con=new OleDbConnection())
{
con.ConnectionString=myConnectionString;
con.Open();
使用(var com=new OleDbCommand())
{
int rec_id=1//
字符串rec_name=“Bubba”//
int rec_工资=2000000//
字符串rec_team=“Springfield Atoms”;//测试数据
int rec_fortyYardDash=99//
字符串rec_position=“后卫”//
bool rec_进攻=假//
字符串sql=
“插入接收器(”+
“接收方id,”+
“收件人姓名,”+
“工资,”+
“团队,”+
“四十码短跑”+
“[职位],”+
“犯罪”+
)值(?,,,,,,,,,,?);
com.Connection=con;
com.CommandText=sql;
com.Parameters.AddWithValue(“?”,rec_id);
com.Parameters.AddWithValue(“?”,记录名称);
com.Parameters.AddWithValue(“?”,rec_salary);
com.Parameters.AddWithValue(“?”,rec_团队);
com.Parameters.AddWithValue(“?”,rec_fortyYardDash);
com.Parameters.AddWithValue(“?”,记录位置);
com.Parameters.AddWithValue(“?”,rec_);
com.ExecuteNonQuery();
}
con.Close();
}
看起来您遗漏了文本类型列的参数@position
,我认为您必须在sql中用“或”括起值request@user2196728不,对于参数化查询,您不需要在SQL字符串中对任何值进行定界。(事实上,人们通常会犯这样的错误。)任何时候当你问一个关于错误的问题时,你应该告诉我们错误是什么。就是这样!!!谢谢你们!当我在数据库中添加字段时,它通常会告诉我它是否是保留字…哦,好吧