ADO.net如何调用带参数的存储过程

在数据库中有book这张表,建立了一个存储过程Createprocproc_select@countintoutputAsSelect@count=count(*)fro... 在数据库中有book 这张表,建立了一个存储过程

Create proc proc_select
@count int output
As

Select @count=count(*) from book

现在, 新建了一个控制台程序,是想在ado.net里面调用带输出参数的存储过程.
代码如下:

Sqlconnecticon=new Sqlconnection(“server=.;uid=sa;pwd=123;database=MyTest”);
Sqlcommand cmd=new Sqlcommand(“proc_select”,con);
cmd.commandType=commandType.storedprocedure;
cmd.parameters.add(@Count,sqldbtype.int);
cmd.parameters= parameterdirection.output;

con.open();
cmd.executenonquery();
con.close();
tmpid = (int)@count.value;

可是最后运行的结果,却是报异常.请帮忙看一下代码,是哪里的语法出了问题.
展开
 我来答
12666954
推荐于2016-02-24 · TA获得超过386个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:336万
展开全部
cmd.parameters.add(@Count,sqldbtype.int); ---错误,@Count加双引
cmd.Parameters.Add("@Count", SqlDbType.Int);
cmd.parameters= parameterdirection.output; --错误parameters是参数集合。非参数属性
cmd.Parameters["@Count" ].Direction = ParameterDirection.Output;

con.open();
cmd.executenonquery(); --错误:大小写。。失误?
con.close();
tmpid = (int)@count.value;--错误
tmpid = (int)cmd.Parameters["@Count"].value;
百度网友804a337e6
2008-04-02 · TA获得超过134个赞
知道答主
回答量:61
采纳率:0%
帮助的人:0
展开全部
修改两句代码:

cmd.parameters.add("@Count",sqldbtype.int);

tmpid = (int)cmd.parameters["@Count"].Value;

这样就可以了!

例子如下:

SqlConnection conDB = new SqlConnection(linkDB);
conDB.Open();
SqlCommand cmdDB = new SqlCommand("SelectQuestion", conDB);
cmdDB.CommandType = CommandType.StoredProcedure;
cmdDB.Parameters.Add("@Link", SqlDbType.VarChar).Value = link;
cmdDB.Parameters.Add("@typeID", SqlDbType.Int).Value = typeID;
cmdDB.Parameters.Add("@questionID", SqlDbType.Int);

cmdDB.Parameters["@questionID"].Direction = ParameterDirection.Output;
cmdDB.ExecuteNonQuery();
conDB.Close();
int questionID = (int)cmdDB.Parameters["@questionID"].Value;
return questionID;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣鸾OJ
2015-10-04 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:111万
展开全部
tring connString = "Data Source = localhost; Initial Catalog = hkjc;User ID = sa;Pwd = 123";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand("GetManagement", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@management", SqlDbType.VarChar, 50).Value = managementname;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt=new DataTable();
sda.Fill(dt);
cmd.Dispose();
cmd.Clone();
conn.Dispose();
conn.Close();
return dt;

注:GetManagement为存储过程名称 @management为参数名称
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式