第 1 行: '-' 附近有语法错误-----怎么解决?

junes8250 2004-05-09 12:00:31
一运行到这总弹出错误[第 1 行: '-' 附近有语法错误],clientDataSet是DataGrid的数据源,listname是数据库中的表名,大家帮我看看是那里错了!

public void SendList(DataSet clientDataSet,string listname)
{
OleDbConnection listConn=new OleDbConnection("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=list;Data Source=(local);Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SHAKA;Use Encryption for Data=False;Tag with column collation when possible=False");

listConn.Open();

OleDbCommand createlist=new OleDbCommand("CREATE TABLE "+listname+" (ID INT NOT NULL UNIQUE,NAME CHAR(20) NOT NULL,SIZE CHAR(20) NOT NULL,UNIT CHAR(5) NOT NULL,NUMBER INT NOT NULL,REQUEST CHAR(20) NOT NULL,DESCRIPTION CHAR(20) )",listConn);

createlist.ExecuteNonQuery();

OleDbDataAdapter listDA=new OleDbDataAdapter("SELECT ID,NAME,SIZE,UNIT,NUMBER,REQUEST,DESCRIPTION FROM "+listname,listConn);

//INSERT
listDA.InsertCommand=new OleDbCommand("INSERT INTO "+listname+"(ID,NAME,SIZE,UNIT,NUMBER,REQUEST,DESCRIPTION) VALUES(@id,@name,@size,@unit,@number,@request,@description",listConn);
OleDbParameter para=listDA.InsertCommand.Parameters.Add("@id",OleDbType.Integer);
para.SourceColumn="ID";
para=listDA.InsertCommand.Parameters.Add("@name",OleDbType.Char);
para.SourceColumn="NAME";
para=listDA.InsertCommand.Parameters.Add("@size",OleDbType.Char);
para.SourceColumn="SIZE";
para=listDA.InsertCommand.Parameters.Add("@unit",OleDbType.Char);
para.SourceColumn="UNIT";
para=listDA.InsertCommand.Parameters.Add("@number",OleDbType.Integer);
para.SourceColumn="NUMBER";
para=listDA.InsertCommand.Parameters.Add("@request",OleDbType.Char);
para.SourceColumn="REQUEST";
para=listDA.InsertCommand.Parameters.Add("@description",OleDbType.Char);
para.SourceColumn="DESCRIPTION";

DataSet listDS=new DataSet();

listDA.Fill(listDS,listname);

listDS=clientDataSet.Copy();

//Update DataBase
listDA.Update(listDS,listname);
}
...全文
319 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
junes8250 2004-05-09
  • 打赏
  • 举报
回复
没法跟踪啊,我把他放到一个Dll里了
eTopFancy 2004-05-09
  • 打赏
  • 举报
回复
你跟踪以下,确定以下问题的所在
junes8250 2004-05-09
  • 打赏
  • 举报
回复
写了括号,还是不行啊!
j9898 2004-05-09
  • 打赏
  • 举报
回复
listDA.InsertCommand=new OleDbCommand("INSERT INTO "+listname+"(ID,NAME,SIZE,UNIT,NUMBER,REQUEST,DESCRIPTION) VALUES(@id,@name,@size,@unit,@number,@request,@description",listConn);
^少了括号
tfming 2004-05-09
  • 打赏
  • 举报
回复
好像是你的数据库的语句写错了吧?!但我用sql server的不知道你错在哪里了
junes8250 2004-05-09
  • 打赏
  • 举报
回复
错误解决了.可是又出现新的错误"@id"没有赋值,晕啊,我是把DataGrid里的值保存到数据库,
"@id"的值该如何赋呢?
junes8250 2004-05-09
  • 打赏
  • 举报
回复
好,我试试先!
lansluo 2004-05-09
  • 打赏
  • 举报
回复
同意j9898的说法,建议再传入的时候做个限制
lnzyquan 2004-05-09
  • 打赏
  • 举报
回复
dll也可以跟踪呀,不然怎么办?
你可以在,项目的输出类型中,把输出类型中改为windows应用程序
在增加个入口函数,就可以运行dll跟踪调试了

j9898 2004-05-09
  • 打赏
  • 举报
回复
上面说错了,表名内若有“-”你应该用[]括起来:

如:"create table ["+listname+"](.........)"
j9898 2004-05-09
  • 打赏
  • 举报
回复
那就应该你的listname 有错! 
表名内不能有“-”,这是限制。你改成下划线试试。
singleflower 2004-05-09
  • 打赏
  • 举报
回复
这种原因是SQL语句有问题,原因有负值,你跟踪一下SQL语句的输出情况

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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