求可变SQL代码拼接代码

哈特比尔波 2017-11-12 08:00:42
需求的程序描述:
有1个变量Y,有初始值,且Y的值会因为其他的X个字符串变量的值发生变化。这X个字符串变量的值每次都需要判定其是否为空,当某个字符串为空,则Y的值不发生变化,当不为空的时候在Y值后面加上当前字符串的内容,接着继续循环判断完这X个变量,直到判断完所有变量,并最终确认Y的值。

需求的实际应用形式:
在代码页中定义了若干个字符串变量,用来存储从页面上获取的文本框内容。
现在需要根据填写的内容来更新数据库中的对应的记录。
就需要根据文本框的实际内容来拼接操作数据库的update语句。
这些文本框的ID就是我们定义的字符串变量。
作为update table (字段1、字段2、……)values (文本框值1、文本框值2、…………)
如果某个文本框的值为空,SQL更新语句就会发生变化。
现在需要写一个循环来判断这个具体的语句该是什么样子的。
请问具体代码应该怎么写?谢谢
...全文
524 17 打赏 收藏 举报
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fengxundao 2018-05-14
大神,能不能加个好友,有个问题请教一下
  • 打赏
  • 举报
回复
N_Share_Service 2017-11-29
stringbuilder sb=new stringbuilder(); if(i==1) { sb.append("语句") }else {sb.append("语句")}
  • 打赏
  • 举报
回复
哈特比尔波 2017-11-24
引用 14 楼 daixf_csdn 的回复:
[quote=引用 10 楼 hiv002 的回复:] [quote=引用 9 楼 daixf_csdn 的回复:] 当某个字符串为空,则Y的值不发生变化 --- 这个逻辑有问题,如果我就是想把值update为空呢? 另外,拼sql就是拼字符串,一点技术难度都没有,这是非c#的代码,本质上一样的,c#都不这么搞了,很落伍了。
你说的这个update为空值,确实是个问题。请问有什么好的方法介绍一下噻。 我目前是和同事聊天的时候想到了使用两个数组和循环来处理。目前已经使用2个一维数据实现了想要的功能,但是今天看到你的这个更新为空值的时候,我那就不行了。求思路。谢谢![/quote] 1楼已经给了答案[/quote] 现在想起来不能两全齐美了。在更新的时候人都是很懒的。当要更新某个值为空时,要手动填写好多数据。而且还是一样的。因为每次都要抓取所有的值。太麻烦了。浪费计算机资源。
  • 打赏
  • 举报
回复
You冷 2017-11-21
挺简单的,只是用语言描述的我看着想睡觉
  • 打赏
  • 举报
回复

update table set field= case when '你的变量'='' then field else '你的变量' end
  • 打赏
  • 举报
回复
引用 10 楼 hiv002 的回复:
[quote=引用 9 楼 daixf_csdn 的回复:] 当某个字符串为空,则Y的值不发生变化 --- 这个逻辑有问题,如果我就是想把值update为空呢? 另外,拼sql就是拼字符串,一点技术难度都没有,这是非c#的代码,本质上一样的,c#都不这么搞了,很落伍了。
你说的这个update为空值,确实是个问题。请问有什么好的方法介绍一下噻。 我目前是和同事聊天的时候想到了使用两个数组和循环来处理。目前已经使用2个一维数据实现了想要的功能,但是今天看到你的这个更新为空值的时候,我那就不行了。求思路。谢谢![/quote] update table set field= case when '你的变量'='' then field else '你的变量' 试试这个
  • 打赏
  • 举报
回复
圣殿骑士18 2017-11-21
引用 10 楼 hiv002 的回复:
[quote=引用 9 楼 daixf_csdn 的回复:] 当某个字符串为空,则Y的值不发生变化 --- 这个逻辑有问题,如果我就是想把值update为空呢? 另外,拼sql就是拼字符串,一点技术难度都没有,这是非c#的代码,本质上一样的,c#都不这么搞了,很落伍了。
你说的这个update为空值,确实是个问题。请问有什么好的方法介绍一下噻。 我目前是和同事聊天的时候想到了使用两个数组和循环来处理。目前已经使用2个一维数据实现了想要的功能,但是今天看到你的这个更新为空值的时候,我那就不行了。求思路。谢谢![/quote] 1楼已经给了答案
  • 打赏
  • 举报
回复
哈特比尔波 2017-11-20
引用 9 楼 daixf_csdn 的回复:
当某个字符串为空,则Y的值不发生变化 --- 这个逻辑有问题,如果我就是想把值update为空呢? 另外,拼sql就是拼字符串,一点技术难度都没有,这是非c#的代码,本质上一样的,c#都不这么搞了,很落伍了。
你说的这个update为空值,确实是个问题。请问有什么好的方法介绍一下噻。 我目前是和同事聊天的时候想到了使用两个数组和循环来处理。目前已经使用2个一维数据实现了想要的功能,但是今天看到你的这个更新为空值的时候,我那就不行了。求思路。谢谢!
  • 打赏
  • 举报
回复
圣殿骑士18 2017-11-19
当某个字符串为空,则Y的值不发生变化 --- 这个逻辑有问题,如果我就是想把值update为空呢? 另外,拼sql就是拼字符串,一点技术难度都没有,这是非c#的代码,本质上一样的,c#都不这么搞了,很落伍了。

if not isnull(ls_tradetype) or ls_tradetype<>'' then 
	ls_appendsql+=" and TradeType='"+ls_tradetype+"' " 
end if
//
if not isnull(ldt_start)  then
	ls_appendsql += ' and SaleDate >= '+"'"+string(ldt_start,'yyyy.mm.dd')+"'"

end if
if not isnull(ldt_start)  then
	ls_appendsql += ' and SaleDate <= '+"'"+string(ldt_end,'yyyy.mm.dd')+" 23:59:59'"

end if

//
ls_storecode = trim(dw_title.object.storecode[ll_row])

if not isnull(ls_storecode) and trim(ls_storecode) <> '' then
	ls_appendsql += ' and StoreCode = '+"'"+ls_storecode+"'  "
end if

ls_posid = trim(dw_title.object.posid[ll_row])

if not isnull(ls_posid) and trim(ls_posid) <> '' then
	ls_appendsql += ' and PosID = '+"'"+ls_posid+"'  "
end if

ls_vipcard = trim(dw_title.object.vipcard[ll_row])
if not isnull(ls_vipcard) and trim(ls_vipcard) <> '' then
	ls_appendsql += ' and VipCard = '+"'"+ls_vipcard+"'  "
end if

ls_tradeno = trim(dw_title.object.tradeno[ll_row])

if not isnull(ls_tradeno) and trim(ls_tradeno) <> '' then
	ls_appendsql +=  ' and TradeNo like '+"'%"+ls_tradeno+"%'  "
end if

ls_operator = trim(dw_title.object.operator[ll_row])

if not isnull(ls_operator) and trim(ls_operator) <> '' then
	ls_appendsql += ' and Operator = '+"'"+ls_operator+"'  "
end if
  • 打赏
  • 举报
回复
哈特比尔波 2017-11-18
下面的代码是我需要处理的。请帮忙完善下:
string xuhao =xuhaoTb.Text.Trim();
                string zichanbianhao = zichanbianhaoTb.Text.Trim();
                string guanzhibianhao = guanzhibianhaoTb.Text.Trim();
                string sn = snTb.Text.Trim();
                string xinghao = xinghaoTb.Text.Trim();
                string loudong = loudongTb.Text.Trim();
                string jifang = jifangTb.Text.Trim();
                string jigui = jiguiTb.Text.Trim();
                string mac = macTb.Text.Trim();
                string ipaddress = ipaddressTb.Text.Trim();
                string shiyechu = shiyechuTb.Text.Trim(); ;
                string beizhu =beizhuTb.Text.Trim();
                string baoguanren =baoguanrenTb.Text.Trim();
                string zhixingsqlcode = "";//定义执行的具体的sql语句代码
                string zhixingdongzuo = "";//定义判断具体执行sql方法的判断条件的值
                zhixingdongzuo = zhixingdongzuozhi.SelectedValue;//给判断值变量赋值,以便程序生成具体的sql代码
                switch (zhixingdongzuo)
                {
                    case "新增":
                        zhixingsqlcode = "insert into networkzichan (资产编号,HH编号,型号,楼栋,机房,机柜,MAC地址,IP地址,SN,事业处,备注,资产保管人) VALUES ('" + zichanbianhao + "','" + guanzhibianhao + "','" + xinghao + "','" + loudong + "','" + jifang + "','" + jigui + "','" + mac + "','" + ipaddress + "','" + sn + "','" + shiyechu + "','" + beizhu + "','" + baoguanren + "');";
                        break;
                    case "更新":
                        if (xuhao != "") { };
                        ;
                        break;
                    case "删除":
                        
                        ;
                        break;
                    case "导出":
                        ;
                        break;

                    default:
                        if (xuhao != "")
                            zhixingsqlcode = "select 序号,资产编号,HH编号,型号,楼栋,机房,机柜,MAC地址,IP地址,SN,事业处,备注,资产保管人 from networkzichan where 序号= '" + xuhao + "' and 资产编号 like '%" + zichanbianhao + "%'" + " and HH编号 like '%" + guanzhibianhao + "%'" + " and SN like '%" + sn + "%'" + " and 型号 like '%" + xinghao + "%'" + " and 楼栋 like '%" + loudong + "%'" + " and 机房 like '%" + jifang + "%'" + " and 机柜 like '%" + jigui + "%'" + " and MAC地址 like '%" + mac + "%'" + " and IP地址 like '%" + ipaddress + "%'" + " and 事业处 like '%" + shiyechu + "%'" + " and 备注 like '%" + beizhu + "%'" + " and 资产保管人 like '%" + baoguanren + "%';";
                        else
                            zhixingsqlcode = "select 序号,资产编号,HH编号,型号,楼栋,机房,机柜,MAC地址,IP地址,SN,事业处,备注,资产保管人 from networkzichan where 资产编号 like '%" + zichanbianhao + "%'" + " and HH编号 like '%" + guanzhibianhao + "%'" + " and SN like '%" + sn + "%'" + " and 型号 like '%" + xinghao + "%'" + " and 楼栋 like '%" + loudong + "%'" + " and 机房 like '%" + jifang + "%'" + " and 机柜 like '%" + jigui + "%'" + " and MAC地址 like '%" + mac + "%'" + " and IP地址 like '%" + ipaddress + "%'"+ " and 事业处 like '%" + shiyechu + "%'" + " and 备注 like '%" + beizhu + "%'" + " and 资产保管人 like '%" + baoguanren + "%';";
                        break;
                } 
  • 打赏
  • 举报
回复
哈特比尔波 2017-11-18
引用 3 楼 insus 的回复:
但愿这篇能给你解决问题带来帮助: http://www.cnblogs.com/insus/p/3837898.html
我看了您提供的链接。我稍后可能会试试看。不过我对这个还不太熟悉。
  • 打赏
  • 举报
回复
丰云 2017-11-14
楼上都说完了,就是这么简单。。。。。
  • 打赏
  • 举报
回复
打中单的ADC 2017-11-13
判断一下啊 x为空的时候y值不变 x不为空的时候执行x+y不就行了
  • 打赏
  • 举报
回复
exception92 2017-11-13
具体用stringbuilder拼接判断,很简单的if 语句。
  • 打赏
  • 举报
回复
insus 2017-11-13
但愿这篇能给你解决问题带来帮助: http://www.cnblogs.com/insus/p/3837898.html
  • 打赏
  • 举报
回复
threenewbee 2017-11-12
还不就是字符串拼接。循环下,只是第一项和别的拼接的方式不同。
  • 打赏
  • 举报
回复
FainSheeg 2017-11-12
update table(...)这里把所有字段列齐全。 values(...)这里,字符串不为空的拼接上去,为空的直接拼接相应的字段名。
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
加入社区
帖子事件
创建了帖子
2017-11-12 08:00
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。