作者TeemingVoid (TeemingVoid)
看板C_Sharp
标题Re: [问题] sqlcommand中parameter的用法
时间Thu Dec 29 20:12:52 2011
※ 引述《Arim (Arim5566)》之铭言:
: 各位版友好
: 假设目前我有四个栏位(四个textbox,分别是cid、cname、tel、city)
: SqlCommand cmd = new SqlCommand(
: "select * from Client where cid=@cid and cname=@cname and
: tel=@tel and city=@city", conn);
: cmd.Parameters.Add("@cname", SqlDbType.NVarChar, 50).Value =
: CnameTextBox.Text;
: ...
: 上述的sql指令会从资料库捞回符合这四个栏位的资料回来
: 但是我如果全部的栏位没有输入,只输入部分的栏位(例如只输入cid)
: 他就会回传符合cid这个栏位的资料
: 但是这样我就要重复写sql command,如下
: select * from Client where cid=@cid
: 但是目前有四个栏位,我就必须写入2^4=16条sqlcommand,会非常麻烦
: 请问如何只写一条sqlcommand,并且可以处理所有的textbox输入情形?
我使用的是一个有点笨但写法一致的作法,请参考看看:
SQLCommnad 的 CommandText 属性是:
select * from Client
where (cid = @cid or @cid = '')
and (cname = @cname or @cname = '')
and (tel = @tel or @tel = '')
and (city = @city or @city = '')"
cmd.Parameters.Add("@cname", SqlDbType.NVarChar, 50).Value
= CnameTextBox.Text.Trim();
// 继续加入其他三个参数物件
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.252.120.221
1F:推 Arim:谢谢 我会参考看看的 12/30 14:37
2F:→ kevin888:用where (1=1) and 非空才加入 and 非空才加入 12/30 23:47