检查字符的合法性
如在text中:项目1+项目2+项目3 > 项目4+项目5,这样一个条件,如何检测其中一个输错误或者我表里没有这个字段。高手赐教。 问题点数:100、回复次数:13Top
1 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-02 18:29:29 得分 0
这问题太笼统了也,详细一点好不?Top
2 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-02 19:03:37 得分 0
思路:
以+号和>号分解字符串(项目1+项目2+项目3 > 项目4+项目5)
分别得到 项目1、项目2、项目3 、项目4、项目5,然后查询表字段,通过对比来判断是否输入正确Top
3 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-03-02 20:28:37 得分 0
adox 就可以检测有没有这个fieldTop
4 楼alpsice(崇拜庖丁之游刃有余)回复于 2006-03-04 11:51:07 得分 0
我说详细一点:如我要做一个SELECT * FROM TABLE WHERE &TEXT1.TEXT&,但如果在text1.text中有非法字符或者不全,无法对应表里的字段,我怎样在这之前来排除这样的问题。能不能用代码来解释一下。Top
5 楼alpsice(崇拜庖丁之游刃有余)回复于 2006-03-09 15:08:47 得分 0
哎,我的一百分都不好给了,有谁说详细点我就给他,大家帮帮我吧,出点力吧Top
6 楼kfly001(磨练)回复于 2006-03-09 16:00:01 得分 0
写SQL之前先对输入数据进行检查撒。Top
7 楼rayxu(有心就成)回复于 2006-03-09 17:06:14 得分 0
生产单号>?并且<? 里面的变量都是直接取控件里的值。用户选择条件查询。
Sql1 = "delete from 丝印 where " & comMore1.Text & " " & comMore2.Text & " + '" + txtMore1.Text + "'and " & comMore1.Text & " " & comMore3.Text & " + '" + txtMore2.Text + "'"
把代码设置“断点”,然后看一下到底哪里出了错。你在断点时面可以看到各变量赋值的情况!Top
8 楼cuizm(射天狼 http://www.j2soft.cn/)回复于 2006-03-10 08:44:16 得分 0
你还是把各个条件分别放到不同的文本框里吧,你这样输入一个文本框里无法判断。
你不是自己给自己找麻烦嘛!
╭════════════════════════════╮
║ ║
║ 免费的学习、交流、源码、工具网站,欢迎大家访问! ║
║ http://www.j2soft.cn/ ║
╰════════════════════════════╯Top
9 楼of123()回复于 2006-03-10 09:10:52 得分 0
那就需要做一个句法分析模块了。
首先用 Split 函数将字符串分割,然后逐个分析:
dim a() as string
do until instr(text1, space(2)) < 1
text1 = replace(text1, space(2), space(1))
loop
a = split(text1, space(1))
for i = 0 to ubound(a)
'这里写分析代码
next
分析内容:
1 是否一个字段名
2 如果不是,是否一个字符串表达式、数字表达式或布尔值
3 相邻的几个词是否构成合法的逻辑表达式,即字段名和值之间是否有合法的运算符(需要注意 Between 这样的特殊格式以及 Boolean 型字段本身就可以构成表达式)
4 表达式之间是否有合法的逻辑运算符
5 注意逻辑运算符可以是逻辑表达式之间的,也可以是表达式内部的
总之,句法分析比较复杂,需要写大量代码。
我的建议,如果是一个比较简单的小程序,就不如发送 SQL 语句之后拦截错误。如果是要求高,需要表现完美的程序,那就写句法分析程序吧。当然,还可以查查 Access 等有无可以外部调用的 SQL 分析函数。Top
10 楼of123()回复于 2006-03-10 09:21:50 得分 0
对于你类似的问题,我的做法是:
1 用一个 ComboBox 下拉列表放所有的字段名
2 用一个 Label 外加一个弹出式 List 供用户选择运算符(当然也可以用 Combo, 仅仅是为了美观)
3 用一个 ComboBox 和一个 DatePicker 根据 Combo 选择的字段类型隐现,让用户输入或选择查询条件。
4 在添加条件按钮按下后,在一个锁定的 TextBox 中放入 "Where"/"And" 加上上面三个控件的内容。可以多次选择,连接成一个多条件的查询。Top
11 楼zq972(最近不想写代码,好累~~~~)回复于 2006-03-10 11:25:59 得分 0
用一个text肯定不好的,应该是用户只能选择不可修改才能保证不错误,
也能减少代码的编写!Top
12 楼province_(雍昊)回复于 2006-03-10 12:01:16 得分 0
这种做法隐患大大的,真是方便了SQL注入的练习者。Top
13 楼zhangzhijian(逍遥||淡水鱼)回复于 2006-03-10 15:08:42 得分 0
我怎么总觉得这方法不太可取?
1,太复杂
2,出错机会太大了.Top




