实在不明白这么写错在何处?Insert into的问题

Amberilee 2005-06-21 10:06:20
源码如下:
dim provider,SQL,ConnStr as string
provider="Microsoft.Jet.OLEDB.4.0;"
ConnStr = "Provider="+Provider+"Data Source="+Server.MapPath( "/db/PurchaseInfo.mdb" )+";Persist Security Info=False;User ID=;Jet OLEDB:Database password=123"
SQL="select * from price"
dim cm as new oledbcommand()
dim con as new oledbconnection()
con.connectionstring=ConnStr
dim cmd as oledbDataAdapter
cmd=new OLEDbDataAdapter(SQL,Connstr)
dim ds as dataset=new dataset()
cmd.fill(ds,"price")
dim dt as DataTable=ds.tables("price")
con.open()
cm.connection=con
cm.commandtext="insert into price(ID,名称,材料类型,材质,规格型号,单位,单价,单价是否含运费,购买时间,现/期货,付款条件,供应方式,执行标准,产地,购买单位,用途,供应商名称,供应商电话,备注) values('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s')"
cm.ExecuteNonQuery()
con.close

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
运行后提示“System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误。”
cm.ExecuteNonQuery()这句变红
我用的是Access数据库
请大虾指点!!

附上Stack Trace
[OleDbException (0x80040e14): INSERT INTO 语句的语法错误。]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
ASP.Purchase_Add_aspx.btnAdd_click(Object sender, EventArgs e) in E:\platform\Purchase_Add.aspx:57
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277


...全文
109 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amberilee 2005-06-21
  • 打赏
  • 举报
回复
我把ID这个字段去掉了,它原先是主键的,我保证没有重复的主键,可是错误还在,郁闷~~~
LoveCherry 2005-06-21
  • 打赏
  • 举报
回复
id是不是主键?是不是主键重复了
ye_zi 2005-06-21
  • 打赏
  • 举报
回复
MARK
Amberilee 2005-06-21
  • 打赏
  • 举报
回复
综合了各位的意见,作如下改动,问题依然存在

insert into price([ID],名称,材料类型,材质,规格型号,单位,单价,单价是否含运费,购买时间,现/期货,付款条件,供应方式,执行标准,产地,购买单位,用途,供应商名称,供应商电话,备注) values(1,'b','c','d','e','f',2,'h','i','j','k','l','m','n','o','p','q','r','s')

ID是数字类型,可是我另一个程序就是这么写的,也有ID这一项,只不过表不同,运行起来没有任何问题。。。。
微量科技 2005-06-21
  • 打赏
  • 举报
回复
可能是数据类型不匹配的问题,你看你的ID是不是数据类型,如果是数据类型的字段就不能用''括起来,括起来就成字符串了
hackate 2005-06-21
  • 打赏
  • 举报
回复
你的ID是不是自动编号的,如果是去掉。。。
yrs007 2005-06-21
  • 打赏
  • 举报
回复
cm.commandtext="insert into price([ID],名称,材料类型,材质,规格型号,单位,单价,单价是否含运费,购买时间,现/期货,付款条件,供应方式,执行标准,产地,购买单位,用途,供应商名称,供应商电话,备注) values('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s')"

在ID修改为:[ID].因为ID是一个保留字呀..以后注意这点东西啊~~~
LoveCherry 2005-06-21
  • 打赏
  • 举报
回复
你可以先在access的查询中调试一下,看看哪里出错了,数字型不要用''包围,关键词别忘记用[]包围
老汉 2005-06-21
  • 打赏
  • 举报
回复
insert into price(ID,名称,材料类型,材质,规格型号,单位,单价,单价是否含运费,购买时间,现/期货,付款条件,供应方式,执行标准,产地,购买单位,用途,供应商名称,供应商电话,备注) values('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s')

把ID字段用[ID]代替试试?

在ACCESS中,一些默认的保留字做字段名的时候,必须使用[]括起来。
老戴12345654 2005-06-21
  • 打赏
  • 举报
回复
数据类型不符吧
ID是什么类型,如果是数字型的 把第一个值改成数字去掉'' 如果是自动编号的就直接删除该字段
现/期货 单价是否含运费 是否是字符型的 ????????
Amberilee 2005-06-21
  • 打赏
  • 举报
回复
补充:数据库的everyone权限未禁止任何项
renyu732 2005-06-21
  • 打赏
  • 举报
回复
你把Sql放入Sql运行一下,看是什么错误?

62,068

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧