大灰狼的SQL工具箱——技巧篇1

任意多字段的INSERT

你遇到过一口气向一个表写N个字段数据的时候吗?(N>30)

是否觉得写一个insert语句都痛苦死了。

1、是否少写了什么字段、

2、是否已经接受了request的值、

3、是否将字段名和 values1,1对齐。

这一些的问题常常困扰着我们

比如 你有一个文件类似于:

------------------------------------

forms.asp

<form method = post action = f2.asp>
 <input type = text name = f1><br>
 <input type = text name = f2><br>
 <input type = text name = f3><br>
 <input type = text name = f4><br>
 <input type = text name = f5><br>
 <input type = text name = f6><br>
 <input type = text name = f7><br>
 <input type = text name = f8><br>
 <input type = text name = f9><br>
 <input type = text name = f10><br>
 <input type = text name = f11><br>
 <input type = text name = f12><br>
 <input type = text name = f13><br>
 <input type = text name = f14><br>
 <input type = text name = f15><br>
 <input type = text name = f16><br>
 <input type = text name = f17><br>
 <input type = text name = f18><br>
 <input type = text name = f19><br>
 <input type = text name = f20><br>
 <input type = text name = f21><br>
 <input type = text name = f22><br>
 <input type = text name = f23><br>
 <input type = text name = f24><br>
 <input type = text name = f25><br>
 <input type = text name = f26><br>
 <input type = text name = f27><br>
 <input type = text name = f28><br>
 <input type = text name = f29><br>
 <input type=submit value = "ok">
</form>

------------------------------------------

用户提交后 我要生成一个:

insert into people(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,people_signaday) values('a','b','c',1,2,3,4,'e','f','g','h',5,6,7,8,9,10,'i','j','k','l','m','n',11,12,13,14,15,16,'2005-9-2')

如果手动写这样一个sql 好痛苦啊。

但是我却很轻松的完成了它。

为什么:

看看我的

----------------------------------------

f2.asp

<%
on error resume next
sql = "insert into people"
namef = "("
valuef = "("
for i= 1 to request.Form.Count
if request.Form(request.Form.Key(i))<>"" then
namef = namef&request.Form.Key(i)&","
end if
if IsNumeric(request.Form(request.Form.Key(i))) = true and len(request.Form(request.Form.Key(i)))<6 then
 if request.Form(request.Form.Key(i))<>"" then
  valuef = valuef&request.Form(request.Form.Key(i))&","
 end if
else
 if request.Form(request.Form.Key(i))<>"" then
  valuef = valuef&"'"&request.Form(request.Form.Key(i))&"',"
 end if
end if
next
namef = namef&"people_signaday)"
valuef = valuef&"'"&date()&"')"
sql = sql&namef&" values"&valuef
response.write sql
response.write err.description
%>

问题解决了。

世界安静了。

a〉缺点:

1、你的表单名必须和你的数据表字段名一致(如果更只能我应该做成配置匹配,但是我的项目用这个足够了);

2、我把数字并且长度小于6的看作数字(这个可以你自己来定);

3、这个代码只能用于asp :) 其他的语言/工具 是一样。

b〉优点:

1、对于前面的f1.asp是透明的,不管f1内有多少个input 或者 select 都通用;

2、我也不管你的input或者select是否有值,他会职能的判断;

3、不用你辛苦的一会的看数据、一会的看那个f1.asp文件

4、代码复杂度降低了,不需要写 很多繁琐的 request.form("")

5、出错的几率降低。

关键你是是否想到了。

如果你有闲心可以把它写成一个方法随时调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值