Vb.net 比较数据库字段中的值,并检查是否与VB中的变量相同

Vb.net 比较数据库字段中的值,并检查是否与VB中的变量相同,vb.net,oracle11g,Vb.net,Oracle11g,我想确保公司名称不会重复添加 所以我想检查一下所有的记录。通过从两个值中删除所有类型的特殊字符/空格,并对两个值进行比较 例如,输入=星际迷航有限公司 例如,数据库的值为star treck ltd 现在,我想删除所有添加到输入中的特殊字符,并从db字段中删除所有字符,以确保不再允许添加此公司名称 ' the following is an input given by user to compare with the db records dim coname : coname

我想确保公司名称不会重复添加 所以我想检查一下所有的记录。通过从两个值中删除所有类型的特殊字符/空格,并对两个值进行比较

例如,输入=星际迷航有限公司 例如,数据库的值为star treck ltd

现在,我想删除所有添加到输入中的特殊字符,并从db字段中删除所有字符,以确保不再允许添加此公司名称

' the following is an input given by user to compare with the db records

       dim coname : coname = gs("company name")
                    coname = replace(coname, "_", "")
                    coname = replace(coname, " ", "")
                    coname = replace(coname, "-", "")
                    coname = replace(coname, "(", "")
                    coname = replace(coname, ")", "")
                    coname = replace(coname, "?", "")
                    coname = replace(coname, "&", "")
                    coname = replace(coname, "^", "")
        if Instr(coname, "'") > 0 then
             coname = replace(coname, "'", "''")
        end if
        dim res
        if coname<>"" then
             res="SELECT COID FROM COMPANY WHERE (CONAME='"&coname&"') AND (CLOSEDFLD=0 OR CLOSEDFLD IS NULL)"
             if LEFT(res,4)="ERR:" then
                 msg res
                 exit function
             end if
         end if

现在,我如何删除上述所有特殊字符/使两个字符中的所有字符(例如大写字母比较)

用以下内容替换您的查询

res="SELECT COID FROM COMPANY WHERE regexp_replace(UPPER(CONAME),'_| |-|(|)|?|&|^','')='"&coname&"' AND (CLOSEDFLD=0 OR CLOSEDFLD IS NULL)"
例如,输入=Star Treck,LTD。例如,数据库的值为Star Treck LTD

您的输入有,而数据库有-和。因此,您要么需要从输入值和数据库值中删除非字母数字字符,要么执行某种模糊匹配

如果要从两个位置替换:

选择COID 从公司 其中TRIM regexpu替换UPPERCONAME,“[^[:alnum:][]+',” = TRIM REGEXP_REPLACE UPPER:coname,'[^[:alnum:]+','' 并且CLOSEDFLD=0或CLOSEDFLD为空
注意:您不应该使用字符串连接来创建查询,而应该使用绑定变量[]。

SQL注入的时机已经成熟。如果coname输入为'or 1=1或'a'='a,则它将获取每一行。更糟糕的是,如果coname是“或存在”,请从secret_表中选择1,其中type='superuser'和password_hash='01234'或'a'='a,那么问题不仅仅限于这一个表。