这个是一个插入按钮的CS代码,但是运行之后提示INSERT INTO 语句的语法错误。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误。源错误:
行 73: cmd.Parameters.Add("@date", OleDbType.Date).Value = System.DateTime.Now;
行 74: cmd.Parameters.Add("@username", OleDbType.VarChar).Value = loginuser1.Text.Trim();
行 75: cmd.ExecuteNonQuery();
protected void rbtn1_Click(object sender, EventArgs e)
{
OleDbConnection constr = new OleDbConnection(ConfigurationManager.AppSettings["OleDbConnectionString"] + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["AccessDbPath"].Trim()));
constr.Open();
OleDbCommand cmd = new OleDbCommand("insert into resource(resname,cname,scname,scid,resdescribe,reslink,date,username) values (@resname,@cname,@scname,@scid,@resdescribe,@reslink,@date,@username)", constr);
string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
cmd.Parameters.Add("@resname", OleDbType.VarChar).Value = resname.Text.Trim();
cmd.Parameters.Add("@cname", OleDbType.VarChar).Value = DropDownList1.SelectedItem.Text.Trim();
cmd.Parameters.Add("@scname", OleDbType.VarChar).Value = DropDownList2.SelectedItem.Text.Trim();
cmd.Parameters.Add("@scid", OleDbType.Integer).Value = int.Parse(this.DropDownList2.SelectedItem.Value.Trim());
cmd.Parameters.Add("@resdescribe", OleDbType.VarChar).Value = resdescribe.Text.Trim(); cmd.Parameters.Add("@reslink", OleDbType.VarChar).Value = fileExtension.ToString();
cmd.Parameters.Add("@date", OleDbType.Date).Value = System.DateTime.Now;
cmd.Parameters.Add("@username", OleDbType.VarChar).Value = loginuser1.Text.Trim();
cmd.ExecuteNonQuery();
rbtn2_Click(sender, e);
Response.Write("<script>alert('添加成功!');</script>");
constr.Close();
}
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误。源错误:
行 73: cmd.Parameters.Add("@date", OleDbType.Date).Value = System.DateTime.Now;
行 74: cmd.Parameters.Add("@username", OleDbType.VarChar).Value = loginuser1.Text.Trim();
行 75: cmd.ExecuteNonQuery();
protected void rbtn1_Click(object sender, EventArgs e)
{
OleDbConnection constr = new OleDbConnection(ConfigurationManager.AppSettings["OleDbConnectionString"] + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["AccessDbPath"].Trim()));
constr.Open();
OleDbCommand cmd = new OleDbCommand("insert into resource(resname,cname,scname,scid,resdescribe,reslink,date,username) values (@resname,@cname,@scname,@scid,@resdescribe,@reslink,@date,@username)", constr);
string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
cmd.Parameters.Add("@resname", OleDbType.VarChar).Value = resname.Text.Trim();
cmd.Parameters.Add("@cname", OleDbType.VarChar).Value = DropDownList1.SelectedItem.Text.Trim();
cmd.Parameters.Add("@scname", OleDbType.VarChar).Value = DropDownList2.SelectedItem.Text.Trim();
cmd.Parameters.Add("@scid", OleDbType.Integer).Value = int.Parse(this.DropDownList2.SelectedItem.Value.Trim());
cmd.Parameters.Add("@resdescribe", OleDbType.VarChar).Value = resdescribe.Text.Trim(); cmd.Parameters.Add("@reslink", OleDbType.VarChar).Value = fileExtension.ToString();
cmd.Parameters.Add("@date", OleDbType.Date).Value = System.DateTime.Now;
cmd.Parameters.Add("@username", OleDbType.VarChar).Value = loginuser1.Text.Trim();
cmd.ExecuteNonQuery();
rbtn2_Click(sender, e);
Response.Write("<script>alert('添加成功!');</script>");
constr.Close();
}
这句格式应该不对,我不知道你参照的是什么,我一般如下写
cmd=new OleDbCommand( "insert into info(name,age,sex,ClassName,tel,address)values('" + username + "','" + userage + "','" + usersex + "','" + userclass + "','" + usertel + "','" + useradr + "'))";也就是说字符串变量需要添加引号,这是经验哦。
{
OleDbConnection constr = new OleDbConnection(ConfigurationManager.AppSettings["OleDbConnectionString"] + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["AccessDbPath"].Trim()));
constr.Open();
string strSQL = "insert into resource(resname,cname,scname,scid,resdescribe,reslink,date,username) values (@resname,@cname,@scname,@scid,@resdescribe,@reslink,@date,@username)";
OleDbCommand cmd = new OleDbCommand(strSQL, constr);
string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
cmd.Parameters.Add("@resname", OleDbType.VarChar).Value = resname.Text.Trim();
cmd.Parameters.Add("@cname", OleDbType.VarChar).Value = DropDownList1.SelectedItem.Text.Trim();
cmd.Parameters.Add("@scname", OleDbType.VarChar).Value = DropDownList2.SelectedItem.Text.Trim();
cmd.Parameters.Add("@scid", OleDbType.Integer).Value = int.Parse(this.DropDownList2.SelectedItem.Value.Trim());
cmd.Parameters.Add("@resdescribe", OleDbType.VarChar).Value = resdescribe.Text.Trim();
cmd.Parameters.Add("@reslink", OleDbType.VarChar).Value = fileExtension.ToString();
cmd.Parameters.Add("@date", OleDbType.Date).Value = System.DateTime.Now;
cmd.Parameters.Add("@username", OleDbType.VarChar).Value = loginuser1.Text.Trim();
//在这里输出SQL语句看看
Response.Write(strSQL);
//cmd.ExecuteNonQuery(); //屏蔽掉暂时不使用
rbtn2_Click(sender, e);
Response.Write("<script>alert('添加成功!');</script>");
constr.Close();
}红色部分修改,然后输出看看你的这个SQL语句具体是什么,然后根据错误再调整
string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
cmd.Parameters.Add("@resname", OleDbType.VarChar).Value = resname.Text.Trim();
cmd.Parameters.Add("@cname", OleDbType.VarChar).Value = DropDownList1.SelectedItem.Text.Trim();
cmd.Parameters.Add("@scname", OleDbType.VarChar).Value = DropDownList2.SelectedItem.Text.Trim();
cmd.Parameters.Add("@scid", OleDbType.Integer).Value = int.Parse(this.DropDownList2.SelectedItem.Value.Trim());
cmd.Parameters.Add("@resdescribe", OleDbType.VarChar).Value = resdescribe.Text.Trim(); cmd.Parameters.Add("@reslink", OleDbType.VarChar).Value = fileExtension.ToString();
cmd.Parameters.Add("@date", OleDbType.Date).Value = System.DateTime.Now;
cmd.Parameters.Add("@username", OleDbType.VarChar).Value = loginuser1.Text.Trim();
cmd.ExecuteNonQuery();
楼主,你那个,@reslink,后面没有传值进去啊
你在insert语句里有这个,@reslink,后面cmd.Parameters.Add的时候没有。