说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于调用存储过程的问题!在线,搞定就结

编辑:说三道四文库 发布时间:2018-06-23 06:07
HTML文档下载 WORD文档下载 PDF文档下载
存储过程:Sp_Stock 参数:@code
SqlConnection Conn= new SqlConnection(ConStr);
Conn.Open();
            SqlDataAdapter da = new SqlDataAdapter("Sp_Stock",Conn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add(new SqlParameter("@code",SqlDbType.NVarChar,20,"@stock")); 
            da.SelectCommand.Parameters["@stock"].Value="11";
    DataSet ds = new DataSet();
da.Fill(ds,"stock");
DataGrid1.DataSource=ds.Tables["stock"].DefaultView;
DataGrid1.DataBind();
我现在不太清楚到底SqlParameter("@code",SqlDbType.NVarChar,20,"@stock")
“@code","@stock"这两个参数到底是干什么的。我现在头都晕了
它是一个变量,在你用
da.SelectCommand.Parameters.Add(new SqlParameter("@code",SqlDbType.NVarChar,20,"@stock")); //对它进行变量的申明
da.SelectCommand.Parameters["@stock"].Value="11";//变量附值
此时@stock的值就变成11传到服务器使用


它一般做为存储过程的参数使用,就像一个函数对外提供参数一样,可用于返回等操作
可以用 sql ="exec Sp_Stock 'code'"
是呀,我现在在想,jn_sly(孤舟)的方法是不是比我写的那个要好呀,请问能不能有人说说它们的区别呢?
还有就是,我去掉@stock程序反而可以运行,加上却不可以运行。请问又是为什么?
呵呵~~,不好意思,我是个新手
你这句有错误

da.SelectCommand.Parameters.Add(new SqlParameter("@code",SqlDbType.NVarChar,20,"@stock")); 
            da.SelectCommand.Parameters["@stock"].Value="11";
因为你申明的是@code对像,而却给@stock附值那一定有错误,可改成下面这样..
da.SelectCommand.Parameters.Add(new SqlParameter("@code",SqlDbType.NVarChar,20)); 
da.SelectCommand.Parameters["@code"].Value="11";
那我还是不知道放@stock的参数有什么用呀?
比如有一个存储过程
select * from table where code=@code and name = @name
那么此时@Type就是个参数

da.SelectCommand.Parameters.Add(new SqlParameter("@code",SqlDbType.NVarChar,20)); 
da.SelectCommand.Parameters["@code"].Value="11";
da.SelectCommand.Parameters.Add(new SqlParameter("@name ",SqlDbType.NVarChar,20)); 
da.SelectCommand.Parameters["@name "].Value="myName";

你使用这样来做就相当于

select * from table where code='11' and name = ''myName
谢谢
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘