继续求助。。

云孤天 2005-06-16 02:21:54
有一个sql语句

"select * from userlist where username='" & username & "'"

但是如果username里面有诸如[、]、'、"之类的字符的时候就出错了。。

有什么办法可以解决吗?
...全文
138 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
云孤天 2005-06-23
  • 打赏
  • 举报
回复
谢谢。。
vbman2003 2005-06-17
  • 打赏
  • 举报
回复
SQL数据库中建立一个存储过程,和上述调用参数化查询的方法一样调用。(不能用PARAMETERS)
云孤天 2005-06-17
  • 打赏
  • 举报
回复
up
云孤天 2005-06-16
  • 打赏
  • 举报
回复
如果是在sqlserver里面就只能用存储过程了?
vbman2003 2005-06-16
  • 打赏
  • 举报
回复
说明一下,ACCESS参数查询要注意参数的顺序,所以用了@1、@2,不能颠倒了。代码是整理了自己程序中的片段,所以不是很规范。txtCode.Text是输入@1的,是文本类型,可以是任意字符,txtName.Text输入@2,是数字类型,不要弄错了。
云孤天 2005-06-16
  • 打赏
  • 举报
回复
看来这个才是我想要的。。谢谢 vbman2003(家人)
vbman2003 2005-06-16
  • 打赏
  • 举报
回复
ACCESS用参数查询,可以处理各种特殊符号
查询查询可以有两种方法,一种是直接在ACCESS查询对象建立参数查询,一种是在SQL语句中用PARAMETERS建立参数查询。下面是个示例:

表名:tb
字段:iNnae(文本)、qty(数字)
在ACCESS查询对象中建立一个名为 tb_in的参数查询:
INSERT INTO tb ( iName, qty )
VALUES ([@1], [@2]);


新建一个工程,上面二个textbox,一个command

Private Sub Command1_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim param As ADODB.Parameter
Dim sql As String
Dim str As String
Dim StrConnect As String
StrConnect = "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & App.Path & "\db1.mdb;Persist " _
& "Security Info=False;Jet OLEDB:Database Password="
Set cn = New ADODB.Connection
cn.Open StrConnect
'执行 tb_in 插入数据
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = "tb_in"
cmd.CommandType = adCmdStoredProc
Set param = cmd.CreateParameter("@1", adChar, adParamInput, 20, txtCode.Text)
cmd.Parameters.Append param
Set param = cmd.CreateParameter("@2", adBigInt, adParamInput, 4, txtName.Text)
cmd.Parameters.Append param
Set rs = New ADODB.Recordset
Set rs = cmd.Execute
Set cmd = Nothing
Set rs = Nothing

'用PARAMETERS指定参数,查询上述代码插入的数据
str = "PARAMETERS @1 text,@2 int;"
sql = str & "SELECT * FROM tb WHERE iName=@1 And qty=@2"
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = sql
cmd.CommandType = adCmdText
Set param = cmd.CreateParameter("@1", adChar, adParamInput, 20, txtCode.Text)
cmd.Parameters.Append param
Set param = cmd.CreateParameter("@2", adBigInt, adParamInput, 4, txtName.Text)
cmd.Parameters.Append param
Set rs = New ADODB.Recordset
Set rs = cmd.Execute
'Debug.Print rs.Fields(0) & " / " & rs.Fields(1)
Set rs = Nothing
Set cmd = Nothing
Set cn = Nothing
End If
云孤天 2005-06-16
  • 打赏
  • 举报
回复
请教参数查询如何做?
conrad_wan 2005-06-16
  • 打赏
  • 举报
回复
可先写个函数,用其他字符(在本数据库中未出现过)代替',再进行查询。
vbman2003 2005-06-16
  • 打赏
  • 举报
回复
SQL数据库可以用存储过程解决
ACCESS数据库可以用参数查询解决
云孤天 2005-06-16
  • 打赏
  • 举报
回复
屏蔽的方法也想过,但是以前的数据已经有非法字符在里面了,以前是用recordset的addnew的方法来加的,现在查询怎么做呢?
daisy8675 2005-06-16
  • 打赏
  • 举报
回复
有[]不会出错吧。

有其他字符是因为SQL的问题。

如果实际数据库没这些字符,你就写个检验正确性的函数过滤掉非法的标点

如果有,则对'再加"'"这个
daisy8675 2005-06-16
  • 打赏
  • 举报
回复
有[]不会出错吧。

有其他字符是因为SQL的问题。

如果实际数据库没这些字符,你就写个检验正确性的函数过滤掉非法的标点

如果有,则对'再加"'"这个
_西瓜皮_ 2005-06-16
  • 打赏
  • 举报
回复
可在查询输入中屏蔽这些字符。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧