ASP.NET insert into 语句的语法错误

if (Page.IsValid)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Member.mdb");
OleDbConnection conn = new OleDbConnection(strConn);
string userName = txtName.Text.Trim();
string sql = "select count(*) from Users where UserName='" + userName + "'";
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
int n = (int)cmd.ExecuteScalar();

if (n > 0)
{
Response.Write("<script>alert(\"提示:用户名已存在!\")</script>");
return;
}
cmd.CommandText = "INSERT INTO" + "Users(UserName,RealName,Sex,[Password],Question,Answer,Email)" +
"values(@UserName,@RealName,@Sex,@Password,@Question,@Answer,@Email)";
cmd.Parameters.Add("@UserName", OleDbType.WChar).Value = userName;
cmd.Parameters.Add("@RealName", OleDbType.WChar).Value = txtRealName.Text.Trim();
cmd.Parameters.Add("@Sex", OleDbType.WChar).Value = lstSex.SelectedItem.Text.Trim();
cmd.Parameters.Add("@Password", OleDbType.WChar).Value = txtPwd1.Text.Trim();
cmd.Parameters.Add("@Question", OleDbType.WChar).Value = lstQuestion.SelectedItem.Text;
cmd.Parameters.Add("@Answer", OleDbType.WChar).Value = txtAnswer.Text.Trim();
cmd.Parameters.Add("@Email", OleDbType.WChar).Value = txtEmail.Text.Trim();
cmd.ExecuteNonQuery();
conn.Close();
Session["UserName"] = userName;
Response.Redirect("main.aspx");

}
}

  asp教程.net
insert
into
语句的语法错误的解决方法
  问题描述:
  我用oledb的方式向access数据里写数据,示例源码如下:
  string
sql="select
*
from
multitable";
  oledbdataadapter
olesub=new
oledbdataadapter(sql,olecn);
  oledbcommandbuilder
cb1=new
oledbcommandbuilder(olesub);
  dataset
ds=new
dataset();
  olesub.fill(ds."multitable");
  datatable
dt=ds.tables["multitable"];
  datarow
dr=dt.newrow();
  dr["prserv"]="ws"+index.tostring().padleft(6,''''0'''');
  dr["number"]="00063";
  ....................................
  dt.rows.add(dr);
  olesub.update(ds,"mulittable");
  这段代码编译的时候是没有问题的,但是在运行的时候,会报出一个运行时错误:”insert
into
语句的语法错误“。
  用oledbadapter的时候,我并没有指定insert语句,而是用oledbcommandbuilder
来自动产生insert
语句的。仔细想了一下,为什么会产生这个错误呢?我的结论是,可能这张表里的字段名使用了access系统的保留字。于是我在access里创建了一个查询,自己写了一个insert
sql,证实我的结论是正确的,number是系统的一个保留字,那怎么修改呢?
  一般来说,最简单的方法就是改掉这个字段名,换成非系统保留字的名字,但是库的结构是客户提供的,不允许修改,只有想别的办法。考虑以前的经验,操作access,sql
server的时候,如果表的字段中包含了系统的保留字的话,我们在字段外加上方括号就可以了,比如
insert
into
tblmultitable(prserv,[number])
values(.......)就可以了。可是从上面的代码中我们看到并没有什么地方我们可以指定insert
语句。我想oledbcommandbuilder应该是根据adapter使用的select语句自动生成insert
语句的,所以只要给select
语句中的字段加上方括号就可以了,所以我作了如下的修改:
  string
sql="select
prserv,[number],priorref,grantor,grantee
from
multitable";
  修改完毕以后,测试以后,仍然产生以前的"insert
into
语句的语法错误";问题会出在哪里呢?我想应该还是在oledbcommanbuilder上,一般来说,只需要这样用oledbcommanbuilder类就可了:
  oledbdataadapter
olesub=new
oledbdataadapter(sql,olecn);
  oledbcommandbuilder
cb1=new
oledbcommandbuilder(olesub);
  打开msdn,看看oledbcommanbuilder的类成员。发现两个很关键的属性:quoteprefix,quotesuffix;仔细想想,oledb可以访问的数据类型非常多啊,所以关键字段的前缀,后缀的处理方法肯定不尽相同,比如访问excel的时候表明应该写成[sheet1$的方式],所以提供这样一种方式是相当灵活的。接下来我再次修改代码,对这两个属性赋值:
  oledbdataadapter
olesub=new
oledbdataadapter(sql,olecn);
  oledbcommandbuilder
cb1=new
oledbcommandbuilder(olesub);
  cb1.quoteprefix="[";
  cb1.quotesuffix="]";
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-11-25
cmd.CommandText = "INSERT INTO" + "Users(UserName,RealName,Sex,[Password],Question,Answer,Email)" +
"values(@UserName,@RealName,@Sex,@Password,@Question,@Answer,@Email)";

连接出来的字符串是错D。。。因为。。。
将字符串相加的时候 你前后的字符串都没有加空格
这样2个单词就连在一起老~
出来的结果就是
INSERT INTOUsers(UserName,RealName.......本回答被提问者采纳

asp.net INSERT INTO 语句的语法错误。
INSERT 后加into

ASP.NET insert into 语句的语法错误
INSERT INTOUsers(UserName,RealName...

ASP.NET insert into 语句的语法错误
olesub.update(ds,"mulittable");这段代码编译的时候是没有问题的,但是在运行的时候,会报出一个运行时错误:”insert into 语句的语法错误“。用oledbadapter的时候,我并没有指定insert语句,而是用oledbcommandbuilder 来自动产生insert 语句的。仔细想了一下,为什么会产生这个错误呢?我的...

ASP.NET insert into 语句的语法错误
字符串sql中valuse改为values

ASP.NET INSERT INTO 语句的语法错误
text 和time都是关键字 要放在[]中 正确的写法mycmd = new OleDbCommand("INSERT INTO [liuyanban] (name,[text],[time]) VALUES ('" + this.Label4.Text + "','" + this.TextBox1.Text + "','" + mydt + "')", mycoon);...

asp.net数据存入数据库提示附近有语法错误
SQL语句有问题,表新增操作的语法是这样的:insert into (表名) (列名A,列名B,列名C) values (列A值,列B值,列C值)比如一张名为students的表中有姓名_name,性别_sex,班级_class三个字段,那么现在新增一名叫张三男性一班的学生的SQL语句如下insert into students (_name,_sex,_class) values ('...

INSERT INTO 语句的语法错误
('"&ip&"','"&sys&"','"&userName&"','"&password&"')" 这个&和字段中间添加个空格试验下,好像我那时ASP.NET的时候 就是&和字段连在一起识别不出来

INSERT INTO 语句的语法错误。
INSERT INTO 在ACCESS的实际使用中时,如果语法正确缺始终出错。最大的可能性是因为字段名使用了系统保留关键字的原因。比如year, month, day, password等,此时只要在关键字上加方括号[]即可。如这段语句: INSERT INTO T_DEMO([password],[year]) VALUES(admin,2008)

asp.net为什么我老提示我INSERT INTO 语法错误,哪错了?
string insertcmd = "INSERT INTO xlzs (name,number)values('" + txtname.Text + "'," + txtnumber.Text + ")";数字格式的不要加'号,number

ASP.NET 将信息导入数据库出现错误:第 1 行: ',' 附近有语法错误.
首先不建议拼接SQL语句,既容易出错,还容易引起SQL注入,万一要拼接,可以考虑使用String.Format()方法构造:string mysql = String.Format("insert into 职工表 (姓名,密码,性别,年龄,入职时间,路径) values ('{0}','{1}','{2}',{3},'{4}','{5}')",name,password,sex,age,path2);强...

相似回答