首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接查询VB.net数据读取器

问连接查询VB.net数据读取器
EN

Stack Overflow用户
提问于 2013-05-14 20:18:30
回答 1查看 1.5K关注 0票数 0

我对两个不同的表用户表和区域表的查询产生了一个问题:

代码语言:javascript
复制
cmd.CommandText = "SELECT  zone_name, zone_difference FROM user_master INNER JOIN zones on user_master.zone_id = zones.ID WHERE user_master.uname LIKE " & """" & usr_gl & """"

Dim reader_q As OleDbDataReader

reader_q = cmd.ExecuteReader()

这里,区域名称和差异来自zones表,zone_id (来自客户)和ID (区域)是相关的,而且用户名(uname)来自外部,作为usr_gl变量,例如"admin“

它表示没有为一个或两个参数指定任何值。我检查了所有的表列和数据。相同的查询独立于Access数据库运行。

我在这里执行的代码有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-14 20:23:10

是的,您正在尝试连接字符串,这是代码中的禁忌

代码语言:javascript
复制
cmd.CommandText = "SELECT  zone_name, zone_difference FROM " & _
                  "user_master INNER JOIN zones on user_master.zone_id = zones.ID " & _
                  "WHERE user_master.uname LIKE ?"

cmd.Parameters.AddWithValue("@p1", usr_gl)
Dim reader_q As OleDbDataReader
reader_q = cmd.ExecuteReader()

字符串连接被认为是一种糟糕的做法,因为正确的字符串格式(带有引号、小数、日期)可能会出现许多问题,这是第一个问题,但Sql Injection是最糟糕的。使用参数化查询应该可以避免所有这些问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16542949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档