使用表单集合建立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。)

时间: 2024-10-14 23:01:10

使用表单集合建立SQL语句3的相关文章

使用表单集合建立SQL语句2

集合|语句 更简单的方法 由此可见,我们需要一种简单的方法,能够根据任何表单建立SQL语句,而不管表单中有多少字段,也不管字段类型如何.要做到这点,我们要利用ASP 内置的request.form集合.经过在这个集合中循环,我们能够把每个表单字段的名称和它的值一起提取出来.列表 B 是这种工作方式的一个简单版本.在您查看代码时,请注意:为了这个技术能够生效,我们的HTML字段名必须与数据库表中的字段名相同.列表 B:使用 request.form 来轻松建立SQL字符串. <%iStr = &quo

使用表单集合建立SQL语句4

集合|语句 复选框 最后一个要考虑的事是,如何处理HTML的复选框.如果HTML表单中的复选框没有被选中,它就不会在request.form集合中出现.如果您使用复选框在数据库中设置真/假值,就会造成问题. 最好的解决方案是在数据库中为这个字段指定一个缺省值,而用复选框指定相反的值.如果这个方法无效,您就需要修改buildSQLInsert函数,对项目中的每个复选框进行处理.列表 D 向表单中加了一个简单的复选框,您可以体验这个问题. 总结如果您曾经编写过处理20个以上字段的SQL语句,您会发现

在ASP中使用的有关表单操作的SQL语句

sql|语句 从某个页面表单中取出信息是ASP编程中常见的问题.但是,遍历通过表单传递的记录会花去多长时间呢?这取决于数据库的大小.简单的GUI界面都可能令循环遍历操作耗费太多的时间. 比方说,假设有个团队成员登录到GUI屏幕输入自己的名字姓氏和名字之间用点号连接:amy.cowen.这个值通过表单提交,她的当前项目列表就从数据库中取了出来并显示在屏幕上.为了快速地取出用户的记录以便显示在屏幕上,你可以编写以下代码. 假设HTML页面上包含以下代码: <FORM ACTION="login

asp根据表单自动生成sql语句的函数

每次在操作数据库的时候最烦的就是根据表单提交的内容写sql语句,特别是字段比较多的时候很麻烦,动不动就容易写错.所以我就写了下面的生成sql语句的函数,用了用觉得还可以. 程序代码: <% '========以下所有函数都没有加入容错机制,所以一定要保证参数的正确性======== '================参数说明================ '此Function返回的是插入数据的sql语句 '注意:使用此Function必须使form里的字段名和数据库里的字段名一致 '并且按钮不

用表单来提交sql - 1

<%'从表单中提取值fName = request.form("fName")lName = request.form("lName")age = request.form("age") '建立SQL语句iStr = "insert into uData (fName, lName, age) "iStr = iStr & "values ("iStr = iStr & "'

ORM映射框架总结--SQL 语句生成组件

 1.       SQL 语句生成组建 之前说过ORM框架中有一个非常重要的组件,那就是SQL语句生成组件.SQL语句生成组件,顾名思义就是用于生成sql语句的一个组件.之前的Attribute 是用于修饰实体信息,而上一章讲的实体分析器分析了实体信息,在很大一部分程度上,以上做工作就是为这个SQL语句生成组件服务的. 该组件的核心接口是IDbFactory,它实现了接口IDisposable 目前该ORM支持SQL Server 数据库的sql语句生成,在后期过程中会逐步实现对Oracle,

经典SQL语句大集合

经典SQL语句大集合,下列语句部分是Mssql语句,不可以在access中使用. 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name

在ASP中使用SQL语句之9:表单操作

语句 从某个页面表单中取出信息是ASP编程中常见的问题.但是,遍历通过表单传递的记录会花去多长时间呢?这取决于数据库的大小.简单的GUI界面都可能令循环遍历操作耗费太多的时间. 比方说,假设有个团队成员登录到GUI屏幕输入自己的名字姓氏和名字之间用点号连接:amy.cowen.这个值通过表单提交,她的当前项目列表就从数据库中取了出来并显示在屏幕上.为了快速地取出用户的记录以便显示在屏幕上,你可以编写以下代码. 假设HTML页面上包含以下代码:<FORM ACTION="login_post

php与mysql建立连接并执行SQL语句的代码

今天写了一个小程序,很小很小,只不过是能够建立php与mysql的链接,并且实现简单的SQL语句. 新手初试,还请各路高手多多指导. 程序源代码如下: 复制代码 代码如下: <?php $conn = mysql_connect("localhost","root","") or die ("wrong!"); $sel=mysql_select_db("mydb",$conn); $sql=&quo