存取过程中有bit参数,当需要传递null实参时,程序中怎么传递过去啊?比如:
create process myprocess
@name varchar(10),@sex bit
as
……
if @sex is not null
……现在问题是在程序中怎么传递null实参过来?因为需要用false和true与存取过程对应,
如果用Convert.ToBoolean(sex)的话,它会被转换为false或true
create process myprocess
@name varchar(10),@sex bit
as
……
if @sex is not null
……现在问题是在程序中怎么传递null实参过来?因为需要用false和true与存取过程对应,
如果用Convert.ToBoolean(sex)的话,它会被转换为false或true
就是用.Parameters["@参数"].Value=形参;
因为我是直接提取到数据集里然后用datagrid显示的,这样就只能显示true和false了
有没有可能把它显示为男和女?
------------------------------------------------------------
create process myprocess
@name varchar(10),@sex bit=null --这里给这个参数默认值为null
as-------------------------------------------------------------
还有怎么把数据库中的0和1跟程序中的男和女对应,
因为我是直接提取到数据集里然后用datagrid显示的,这样就只能显示true和false了
有没有可能把它显示为男和女?
这个问题你可以再程序中处理也可以直接写sql句子处理
select 性别=case sex when 1 then '男'
when 0 then '女'
else then '不明'
end
from 表
if (p == "")
.Parameters["@参数"].Value=null;
else
.Parameters["@参数"].Value=p;p是你要传的参数。
还有怎么把数据库中的0和1跟程序中的男和女对应,
因为我是直接提取到数据集里然后用datagrid显示的,这样就只能显示true和false了
有没有可能把它显示为男和女?可以写在DataGrid的ItemDataBound事件中
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Cells[0].Text = Convert.ToString(e.Item.ItemIndex + 1);
if (e.Item.Cells[0].Text == "0")
{
e.Item.Cells[0].Text = "女";
}
else
{
e.Item.Cells[0].Text = "男";
}
}
create process myprocess
@name varchar(10),@sex bit=null --这里我是有默认参数null的,只是忘了打上去
as
只是函数这样:function(bool p)
{
if (p == "")
.Parameters["@参数"].Value=null;
else
.Parameters["@参数"].Value=p;
}
传过来的实参是没有办法为""(空字符)的!