可传空参数的方法如何做?

yoshikage 2006-11-16 08:09:08
现在我设计一个类的方法,需要传个null做为参数,形参类型为int,在sql语句中判断,实现动态改变sql语句的功能。

但是VS认为null是无效参数,不匹配int类型,请问我该怎么做?
...全文
592 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cangwu_lee 2006-11-17
  • 打赏
  • 举报
回复
路过,保留

liujia_0421 2006-11-17
  • 打赏
  • 举报
回复
如果像楼主所说,那wxl_pilot(空军飞行员) 的方法应该可行....
OrangeSeaCoast 2006-11-17
  • 打赏
  • 举报
回复
比如你的TYPE值是1到1000,你可以把这个空值的默认值设置为99999,然后在程序里加上判断
IF (int_I==99999)
{
select * from books
}else
{
调用用这个句,select * from books where type = int_I
}
我只是提供另外一种思路,如何避免传递空值的情况。
wxl_pilot 2006-11-17
  • 打赏
  • 举报
回复
public void ExecSql()
{
ExecSql("");
}
public void ExecSql(string type)
{
string sql = "select * from books";
sql = type.Trim().Equals(string.Empty)?sql:sql+" where type = @type ";

}
wxl_pilot 2006-11-17
  • 打赏
  • 举报
回复
难道不能把方法重载一下?
yoshikage 2006-11-17
  • 打赏
  • 举报
回复
wangkun9999()

现在不是if(myvalue.Tostring()==string.Empty)的问题,现在VS.NET根本不认识myvalue,认为那是无效值,通过不了编译。与int类型的形参不匹配。
yoshikage 2006-11-17
  • 打赏
  • 举报
回复
OrangeSeaCoast(橙色海岸) 有什么高见呢?

有一张books表,写一条sql语句,能实现按books的type进行查询。

d2.aspx ——>select * from books where type = @type

但是在d1.aspx中是select * from books就行了。

现在是两条sql语句,你说写成两条sql语句好,还是将这两条语句合并为一条好呢?
OrangeSeaCoast 2006-11-17
  • 打赏
  • 举报
回复
为什么一定要是空值呢,设置一个软件不会出现的值进行初使化一下,不行吗?
liujia_0421 2006-11-17
  • 打赏
  • 举报
回复
晕,这还不好办吗?

作个判断不就行了吗?

if(为空)
{
//用DBNull.value
}
esle
{
//用不空的值
}


我们目前的项目就是这么用的....
wangkun9999 2006-11-17
  • 打赏
  • 举报
回复
yoshikage()
你这是指定它为DBNull,可是,我这个参数有时为空,有时不为空。

楼主,将值作为一个变量就行啦:

int myvalue; //你要传入的值


SqlCommand cmd = new SqlCommand("select * from student where sno=@Sno", con);
if (myvalue.Tostring()==string.Empty)
{
cmd.Parameters.AddWithValue("@Sno", DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@Sno", myvalue);
}
liujia_0421 2006-11-17
  • 打赏
  • 举报
回复
楼主的到底是想达到什么目的,能否说得更清楚点...

最好能附带下你的代码....
yoshikage 2006-11-17
  • 打赏
  • 举报
回复
你这是指定它为DBNull,可是,我这个参数有时为空,有时不为空。
yehzh 2006-11-17
  • 打赏
  • 举报
回复
我一般是定义一个默认值,例如int.MinValue,如果传入的值等于此值则特殊处理,否则正常处理
shoushii 2006-11-16
  • 打赏
  • 举报
回复
支持上面的
liujia_0421 2006-11-16
  • 打赏
  • 举报
回复
OK?
liujia_0421 2006-11-16
  • 打赏
  • 举报
回复
试试这个:

SqlCommand cmd = new SqlCommand("select * from student where sno=@Sno", con);
cmd.Parameters.AddWithValue("@Sno", DBNull.Value);
.......

110,567

社区成员

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

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

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