VB 如何使用 带?号的 SQL 查询语句

来源:百度知道 编辑:UC知道 时间:2024/05/31 06:22:36
我有一个Access 表,字段为:ID,自动编号;姓名,Text(10)。
在Access中做了一个查询:
select * from 表名 where (姓名=[?])
打开查询时会有一个参数框让我输入姓名的查询条件,输入后能正常查询到结果。
当我VB 调用该查询时提示[]处错,修改为
select * from 表名 where (姓名='?’)
后能够执行,但不知怎么输入查询条件,显示的是一个空查询表!
望大侠救我!
我想知道的就是如何用加上参数来调用 select * from 表名 where (姓名=[?])
这个查询。

我一真就是用
"select * from 表名 where 姓名='" + Text1.text + "'"
的,
但是听说这样不安全!
非常感谢!

select * from 表名 where (姓名='?’) 这个查询条件没有什么语法错误,但意思就是从“表名”中查询“姓名=?”的所有结果,你的表中并没有姓名为“?”的记录,所以只能得到一个空的查询结果。

1、如果你想查询表中所有记录,直接用“select * from 表名 ”
2、如果你想查询查询参数框提供的按姓名查询的条件,按以下这样写:

"select * from 表名 where 姓名='" + Text1.text + "'"

(以上假定你提取查询条件的文本输入框是Text1),意思就是你要给出实际的查询条件,具体的select查询语法很多,你可以参考专门的该语法解释。

PS:如果你想做模糊查询,例如查询表中所有姓“王”或含有“王”的人名,可以用以下方式,select * from 表名 where 姓名 like '王'

在SQL里,like 其实还有其他一些用法,例如在查询关键字里加诸如“%”“_”等通配符,具体你可以检索这个的用法,很多的。

select 语法里不支持什么“?”

在ACCESS里,查询语句出现未定义的变量都会出现提示框的,不一定要?号。如可以改成
select * from 表名 where (姓名=[请输入你的姓名])

在vb里ado的标准sql是无此功能的。可用text1.text这样替代。如果非要用提示框,
那就这样:
s = InputBox("输入你的姓名")
select * from 表名 where 姓名='" & s & "'"

select * from 表名 where (姓名='?') 里面的 ? 是要你在VB里,用实际的内容去替换的