Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Access数据库插入语法错误_C#_Database_Ms Access - Fatal编程技术网

C#Access数据库插入语法错误

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

我的insert语句出现语法错误,但找不到错误

这是我的方法

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字符串中对任何值进行定界。(事实上,人们通常会犯这样的错误。)任何时候当你问一个关于错误的问题时,你应该告诉我们错误是什么。就是这样!!!谢谢你们!当我在数据库中添加字段时,它通常会告诉我它是否是保留字…哦,好吧