急!怎么老是出现"'dbo'附近有语法错误"?

hjzhlc 2009-12-31 12:31:46
存储过程这样
ALTER PROCEDURE dbo.NewCartInsert
(
@客户ID int,
@产品ID int,
@产品名称 nvarchar(40),
@单位数量 nvarchar(20),
@单价 numeric(18,2),
@订购量 int,
@订购时间 datetime
)
AS
/* SET NOCOUNT ON */
insert into dbo.订单(客户ID,产品ID,产品名称,单位数量,单价,订购量,订购时间)
values(@客户ID,@产品ID,@产品名称,@单位数量,@单价,@订购量,@订购时间)
RETURN

按钮的代码是这样
protected void Button1_Click(object sender, EventArgs e)
{
for (int ii = 0; ii < GridView1.Rows.Count; ii++)
{
CheckBox cc = (CheckBox)GridView1.Rows[ii].Cells[0].FindControl("CheckBox1");
if (cc.Checked)
{
SqlDataSource1.InsertParameters.Clear();
SqlDataSource1.InsertParameters.Add("客户ID", Session["khbz"].ToString());
SqlDataSource1.InsertParameters.Add("产品ID", GridView1.Rows[ii].Cells[1].Text);
SqlDataSource1.InsertParameters.Add("产品名称", GridView1.Rows[ii].Cells[2].Text);
SqlDataSource1.InsertParameters.Add("单位数量", GridView1.Rows[ii].Cells[3].Text);
SqlDataSource1.InsertParameters.Add("单价", GridView1.Rows[ii].Cells[4].Text);
SqlDataSource1.InsertParameters.Add("订购量", GridView1.Rows[ii].Cells[5].Text);
SqlDataSource1.InsertParameters.Add("订购时间", DateTime.Today.ToShortDateString());
SqlDataSource1.InsertCommand = "dbo.NewCartInsert";
Session["ccsj"] = DateTime.Today.ToShortDateString();
SqlDataSource1.Insert();
}
}
}

点击按钮时想把数据存到订单里,可为什么每次都是在SqlDataSource1.Insert()这句提示“'dbo'附近有语法错误”,哪位大虾能指点一下迷津?谢谢!
...全文
318 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjzhlc 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 alifriend 的回复:]
SqlDataSource1.InsertParameters.Add("@客户ID", Session["khbz"].ToString());
[/Quote]

不行啊!
hjzhlc 2009-12-31
  • 打赏
  • 举报
回复
存储过程应该是
ALTER PROCEDURE dbo.NewCartInsert
(
@客户ID nvarchar(20),
@产品ID int,
@产品名称 nvarchar(40),
@单位数量 nvarchar(20),
@单价 numeric(18,2),
@订购量 int,
@订购时间 datetime
)
AS
/* SET NOCOUNT ON */
insert into dbo.订单(客户ID,产品ID,产品名称,单位数量,单价,订购量,订购时间)
values(@客户ID,@产品ID,@产品名称,@单位数量,@单价,@订购量,@订购时间)
RETURN
波导终结者 2009-12-31
  • 打赏
  • 举报
回复
SqlDataSource1.InsertParameters.Add("@客户ID", Session["khbz"].ToString());
csdnfan 2009-12-31
  • 打赏
  • 举报
回复
楼主不会真的用汉字当做参数名吧?在SQL中汉字和英文的存储方式是不同的,字节数也不一样。把汉字换成英文名称就不会有错了。
xray2005 2009-12-31
  • 打赏
  • 举报
回复
dbo.去掉。
peterb 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 alifriend 的回复:]
SqlDataSource1.InsertParameters.Add("@客户ID", Session["khbz"].ToString());
[/Quote]
应该是参数名称错误
huminghua 2009-12-31
  • 打赏
  • 举报
回复
把dbo去掉撒!首先在数据库里面执行INERT语句看成功不咯!然后在仔细看下程序的代码咯!
zl194 2009-12-31
  • 打赏
  • 举报
回复
直接在查询分析器 EXEC一下,如果没问题,那就是存储过程没问题。(查询分析器连接时,使用和.net相同的用户。)
huming_h 2009-12-31
  • 打赏
  • 举报
回复
去掉存储过程中订单表浅的dbo试试
insert into 订单(客户ID,产品ID,产品名称,单位数量,单价,订购量,订购时间)
values(@客户ID,@产品ID,@产品名称,@单位数量,@单价,@订购量,@订购时间)
zzxap 2009-12-31
  • 打赏
  • 举报
回复
权限问题。
tianliang1 2009-12-31
  • 打赏
  • 举报
回复
如果我这个问题在这里得不到好的解决,到数据库区去问问,可能会更好。。。
lianyi68 2009-12-31
  • 打赏
  • 举报
回复
......
daichenghua 2009-12-31
  • 打赏
  • 举报
回复
ALTER PROCEDURE dbo.NewCartInsert 你把修改为ALTER PROCEDURE NewCartInsert
insert into dbo.订单 你把修改为insert into dbo.订单

可能是用户权限的问题
颤菊大师 2009-12-31
  • 打赏
  • 举报
回复
我想,倘若你在 查询分析器 里直接执行"dbo.NewCartInsert",也会得到同样的错误.
颤菊大师 2009-12-31
  • 打赏
  • 举报
回复
SqlDataSource1.InsertCommand = "dbo.NewCartInsert";
?
我很少用过类似语句.但我想,默认的CommandType是Text,你应该更改这个属性(不知道是不是CommandType属性).

111,122

社区成员

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

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

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