过程或函数 'procInsert' 需要参数 '@Title',但未提供该参数。

wam82197567 2011-11-21 04:08:28
大家帮我看看为什么啊
public bool Insert(News n)
{
bool flag = false;
string proName = "procInsert";
//string proName = "insert into T_News(Title,CatId,Content) values(@Title,@CatId,@Content)";
SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@Title",n.Title),
new SqlParameter("@CatId",n.Catid),
new SqlParameter("@Content",n.Content)
};
int reg = sqlhelper.ExcuteNonQuery(proName, paras, CommandType.Text);
if (reg > 0)
{
flag = true;
}
return flag;
}
存储过程:ALTER PROCEDURE procInsert
/*
(
@parameter1 int = 5,
@parameter2 datatype OUTPUT
)
*/
@Title varchar(50),
@CatId int,
@Content text
AS
insert into T_News(Title,CatId,Content) values(@Title,@CatId,@Content)
return
exec procInsert


如果我换成SQL语句就可以,用存储过程就不行了
...全文
1143 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
文走520 2014-01-29
  • 打赏
  • 举报
回复
引用 19 楼 wam82197567 的回复:
问题解决了,谢谢各位。
哥,我就想知道如何解决的。。。
东东小屋 2012-09-26
  • 打赏
  • 举报
回复
"@Title"之间可能有空格了,今天也是犯了这个错误,解决了,呵呵
zhaoyycit 2011-11-25
  • 打赏
  • 举报
回复
何解啊?总要公布问题的原因呢~~
[Quote=引用 19 楼 wam82197567 的回复:]
问题解决了,谢谢各位。
[/Quote]
wam82197567 2011-11-23
  • 打赏
  • 举报
回复

问题解决了,谢谢各位。
wam82197567 2011-11-22
  • 打赏
  • 举报
回复
这代码该写写在哪里的?[Quote=引用 5 楼 hhqsy 的回复:]

C# code

param = new sqlparameter("@parametername", sqldbtype.datetime);
param.direction = parameterdirection.input;
param.value = convert.todatetime(inputdate);
cmd.parameters.add(param);





……
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wam82197567 的回复:]
问题还没用解决啊,求助
[/Quote]照着偶的方法试过了么?
wam82197567 2011-11-22
  • 打赏
  • 举报
回复
问题还没用解决啊,求助
zhaoyycit 2011-11-22
  • 打赏
  • 举报
回复
CommandType.Text?!!! 牛了 明明是存储过程啊 ProductStore吧?
自由_ 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hhqsy 的回复:]

C# code


SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@Title",sqldbtype.VarChar),
new SqlParameter("@CatId",sqldbtype.Int),
new SqlParameter("@Content",sqldbtype.VarChar)
}……
[/Quote]
+1
new SqlParameter()没有提供赋值的参数
lian_2011 2011-11-22
  • 打赏
  • 举报
回复
LZ,你都没传数据给title,还有楼主最好别直接给参数,最好在sqlpar那个里面先定义,然后par.vales[1]="参数",这样执行速度比你那样写要快10倍,大数据量你就知道了
  • 打赏
  • 举报
回复

public bool Insert(News n)
{
bool flag = false;
string proName = "procInsert";
//string proName = "insert into T_News(Title,CatId,Content) values(@Title,@CatId,@Content)";
SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@Title",sqldbtype.VarChar),
new SqlParameter("@CatId",sqldbtype.Int),
new SqlParameter("@Content",sqldbtype.VarChar)
}

paras[0].direction = parameterdirection.input;
paras[0].value =n.Title;
paras[1].direction = parameterdirection.input;
paras[1].value =n.Catid;
paras[2].direction = parameterdirection.input;
paras[2].value =n.Content;


  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wam82197567 的回复:]
引用 9 楼 ldc121xy716 的回复:

用断点获取sql语句就可以知道了
你没进数据库之前sql语句是string类型的 即使是空值sql语句也不会报错得
int reg = sqlhelper.ExcuteNonQuery(proName, paras, CommandType.Text);
之前设置断点 调试就很清楚了

可以确定的是参数是传过来的了,把存储过程改为SQ……
[/Quote]楼主你确定你给参数赋值了?检查你在C#定义存储过程参数的语法对不对
wam82197567 2011-11-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ldc121xy716 的回复:]

用断点获取sql语句就可以知道了
你没进数据库之前sql语句是string类型的 即使是空值sql语句也不会报错得
int reg = sqlhelper.ExcuteNonQuery(proName, paras, CommandType.Text);
之前设置断点 调试就很清楚了
[/Quote]
可以确定的是参数是传过来的了,把存储过程改为SQL语句,值就加进数据库了的,调试到paras这里,paras是获得了我从页面传递过来的值
大雷神 2011-11-21
  • 打赏
  • 举报
回复
用断点获取sql语句就可以知道了
你没进数据库之前sql语句是string类型的 即使是空值sql语句也不会报错得
int reg = sqlhelper.ExcuteNonQuery(proName, paras, CommandType.Text);
之前设置断点 调试就很清楚了
zwodezuiai 2011-11-21
  • 打赏
  • 举报
回复
exec procInsert
最后这句不要了吧
wam82197567 2011-11-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 feng03 的回复:]

n.Title应该传进去的是空值
[/Quote]

如果我传进去的是空,我用上面的SQL语句应该不行吧,但是用SQL就可以
  • 打赏
  • 举报
回复


SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@Title",sqldbtype.VarChar),
new SqlParameter("@CatId",sqldbtype.Int),
new SqlParameter("@Content",sqldbtype.VarChar)
}

paras[0].direction = parameterdirection.input;
paras[0].value =n.Title;
paras[1].direction = parameterdirection.input;
paras[1].value =n.Catid;
paras[2].direction = parameterdirection.input;
paras[2].value =n.Content;




  • 打赏
  • 举报
回复

param = new sqlparameter("@parametername", sqldbtype.datetime);
param.direction = parameterdirection.input;
param.value = convert.todatetime(inputdate);
cmd.parameters.add(param);




幕夜 2011-11-21
  • 打赏
  • 举报
回复
n.Title应该传进去的是空值
zhanglong_longlong 2011-11-21
  • 打赏
  • 举报
回复
变量可能给他传的空的,所以就报这个错误
加载更多回复(2)

62,046

社区成员

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

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

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

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