| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 994 人关注过本帖
标题:[讨论]C#调用存储过程的问题
只看楼主 加入收藏
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
结帖率:33.33%
收藏
 问题点数:0 回复次数:11 
[讨论]C#调用存储过程的问题
总出错!看看问题在哪?(服务器的存储过程是没有问题的)。
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 服务器 
2006-08-24 11:27
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 

总提示:“SqlParameterCollection 仅接受非空的 SqlParameter 类型对象,不接受 String 对象。”

SqlConnection conn = new SqlConnection(Log_in.ljmc);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "hanzi";

SqlParameter sqlpar = new SqlParameter("@myhz", SqlDbType.VarChar,50);
sqlpar.Direction = System.Data.ParameterDirection.Input;
sqlpar.Value = "中华人民共和国";
cmd.Parameters.Add("@myhz");


SqlParameter sqlpar1 = new SqlParameter("@daima", SqlDbType.VarChar, 50);
sqlpar1.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add("@daima");

this.textBox1.Text = cmd.Parameters["@daima"].Value.ToString();

conn.Close();
cmd.Dispose();


}


2006-08-24 11:29
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
各位老大,快帮忙看看啊!3Q!

2006-08-24 13:38
CrazyWeed0907
Rank: 2
等 级:新手上路
威 望:5
帖 子:1385
专家分:0
注 册:2006-5-30
收藏
得分:0 
你的cmd 怎么没执行啊

“十步杀一人,千里不留行。事了拂衣去,深藏身与名。”
2006-08-24 13:41
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
存储过程 hanzi
需要接收参数 @myhz varchar(50),输出参数 @daima varchar(50)

SqlParameter sqlpar = new SqlParameter("@myhz", SqlDbType.VarChar,50);
sqlpar.Direction = System.Data.ParameterDirection.Input;
sqlpar.Value = "中华人民共和国";
cmd.Parameters.Add("@myhz"); //这个地方老是通不过,提示:SqlParameterCollection 仅接受非空的 SqlParameter 类型对象,不接受 String 对象。


2006-08-24 13:41
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
呵呵,忘加了
cmd.ExecuteNonQuery();

不过好像和它没有关系,一样的位置提示一样的错误

2006-08-24 13:44
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
SqlParameter parameter = new SqlParameter( "@BeginDate", SqlDbType.DateTime);
parameter.Value = new DateTime( 1995, 1,1);
executeCmd.Parameters.Add(parameter);

// 参数二:EndDate
parameter = new SqlParameter("@EndDate", SqlDbType.DateTime);
parameter.Value = new DateTime(1995, 12, 30);
executeCmd.Parameters.Add(parameter);

Add方法都这样传的吧
2006-08-24 13:45
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
//一个参数的重载
public override int Add(object value); //这里不能传string类型
public SqlParameter Add(SqlParameter value);

//N个参数的重载
public SqlParameter Add(string parameterName, object value);
public SqlParameter Add(string parameterName, SqlDbType sqlDbType);
public SqlParameter Add(string parameterName, SqlDbType sqlDbType, int size);
public SqlParameter Add(string parameterName, SqlDbType sqlDbType, int size, string sourceColumn);





[此贴子已经被作者于2006-8-24 13:51:53编辑过]

2006-08-24 13:48
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

一个参数的add方法不能是string,只能是sqlpara值,要给string值,可以

cmd.Parameters.Add("@myhz",SqlDbType.VarChar);

2006-08-24 13:50
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
谢谢楼上的大锅!!!问题解决了,我的参数传的不对。再次感谢!

2006-08-24 13:51
快速回复:[讨论]C#调用存储过程的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040846 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved