浏览器大全:是一个提供流行浏览器教程、在线学习分享的学习平台!

使用表单集合创建SQL语句3

其它考虑

靠近函数的顶部,您会注意到我们使用了replace函数,把数据中的每个单引号替换成两个单引号。这是因为SQL翻译器使用单引号做为字符串的分隔符,如果数据中有单引号,就会造成SQL解释错误。把一个单引号转换成两个单引号,可以确保SQL翻译器在文本中正确加入单引号。

到了现在,就只剩下两个问题要解决:空值Null及从最终SQL语句中省略字段。列表 D 中加入了这两个问题的代码。

列表 D: buildSQLInsert函数的最终版。


<%
function buildSQLInsert( targetTable, omitFields)
iStr = "insert into " & targetTable & " "
vStr = "values ("
nStr = "("
' 在表单集合中循环,并建立起SQL语句的组成部分
for each x in request.form
fieldName = uCase(x)
' 判断字段是否被省略?
if inStr(uCase(omitFields),x) = 0 then
fieldData = replace(request.form(fieldName), _
"'", "''")
' 如果没有数据,就插入 NULL
if trim(fieldData) = "" then
fieldData = "NULL"
vStr = vStr & fieldData & ", "
nStr = nStr & fieldName & ", "
else
typeDelimPos = inStr(fieldName, "_")
if typeDelimPos = 0 then
' 是文本字段
' 建立字段名列表
nStr = nStr & fieldName & ", "
vStr = vStr & "'" & fieldData & "', "
else
' 字段是其它类型
fieldType = left(fieldName, typeDelimPos - 1)
fieldName = mid(fieldName, typeDelimPos + 1)
' 把字段名加入名称列表
nStr = nStr & fieldName & ", "
' 把字段类型变成大写以确保匹配
select case uCase(fieldType)
case "NUM"
vStr = vStr & fieldData & ", "
'把不明类型按文本型处理
case else
vStr = vStr & "'" & fieldData & "', "
end select
end if
end if
end if
next

' 把结尾的", " 从我们建立的字符串中去掉
vStr = left(vStr, len(vStr) - 2) & ")"
nStr = left(nStr, len(nStr) - 2) & ") "

' 把SQL语句整合起来
buildSQLInsert = iStr & nStr & vStr
end function


if trim(request("fName")&request("lname")&request("age")) <> "" then
response.write( buildSQLInsert("") & "<BR<")
response.write( buildSQLInsert("NUM_AGE") & "<BR>")
response.write( buildSQLInsert("lname,fname") & "<BR>")
response.write( buildSQLInsert("mycheckbox,fname") &
=<"<BR<")
else
%>

<html>
<body>
<form name=f method=post action="列表4.asp">
Gimme your:<br>
First Name: <input type=text name="fName"<<br>
Last Name: <input type=text name="lName"<<br>
Age: <input type=text name="num_age"<<br>
<input type="checkbox" value="Y" name="MyCheckBox"<Do you want this checked?<br>
<input type="submit" value="Submit">
</form>
</body>
</html>

<%
end if
%>


空值Null 的处理相当简单。如果我们收到的字段为空,我们就在最终SQL字段中放空值。这很简单,重要的是要注意:使用这种方法的前提是,在做此项操作之前,已经对表单数据进行过校验。例如,如果您的数据库不允许fname使用空值,您就要在向ASP代码提交数据之前,确保用户填写了这个字段。(客户端JavaScript 做这件事非常优秀。)

另外一个问题是,有时您可能不想在SQL语句中包含某个字段。列表 D 通过在函数中增加omitFields参数(省略字段)来解决这个问题。在这个参数中传递的任何字段名都会被排除在最终SQL语句之外。如果要省略不止一个字段,只要用逗号分隔即可。如果不想省略任何字段,只要给函数传递一个空字符串("")即可。注意,要按字段在HTML文件中的名称来传递字段名,而不要按字段在数据库中的名称来传递(例如,传递num_age,而不是age。)


相关软件

2345加速浏览器官方版

2345加速浏览器官方版 | 56.2MB

2345加速浏览器官方版

新一代2345加速浏览器采用Chromium和IE双内核,主打极速与安全特性。基于Chromium深度定制,引入网页智能预加载技术,访问网页更快速..

QQ浏览器官方正式版

QQ浏览器官方正式版 | 49.67MB

QQ浏览器官方正式版

QQ浏览器秉承TT浏览器1-4系列方便易用的特点,但技术架构不同,交互和视觉表现也重新设计,采用Chromium内核+IE双内核,让浏览快速稳定...

百度浏览器最新版下载

百度浏览器最新版下载 | 13.3MB

百度浏览器最新版下载

q百度浏览器,是一款简洁轻快、智能懂你的浏览器。依靠百度强大的搜索平台,在满足用户浏览网页的基础上,它整合百度体系业务优势,带给用户更方便的浏览方式功能...

UC浏览器官方正式版

UC浏览器官方正式版 | 44.2MB

UC浏览器官方正式版

UC浏览器(UC Browser)是UC Mobile Limited在2004年8月开发的一款软件,分uc手机浏览器和uc浏览器电脑版。UC浏览器是全球使用量最大的第三方手机浏览器...

猎豹浏览器2022最新版下载

猎豹浏览器2022下载 | 45MB

猎豹浏览器2022最新版下载

猎豹安全浏览器对Chrome的Webkit内核进行了超过100项的技术优化,访问网页速度更快。其具有首创的智能切换引擎,动态选择内核匹配不同网页...

360安全浏览器官方版下载

360安全浏览器下载 | 21.4MB

360安全浏览器官方版下载

360安全浏览器拥有全国最大的恶意网址库,采用恶意网址拦截技术,可自动拦截挂马、欺诈、网银仿冒等恶意网址。独创沙箱技术,在隔离模式即使访问****也不会感染...