【发布时间】:2019-03-22 11:13:16
【问题描述】:
我在 VB.NET 上工作,现在正在切换到 C#。我正在使用以下代码将表格用作组合框中的变量来填充 DataGrid:
Dim strTAB as a String
dtTAB1 = New DataTable
strTAB = cboDTA_TBL.Text
adpPRJ = New SqlDataAdapter("Select * from """ & strTAB & """", conPRJ_NET)
'conPRJ_NET is connection to connect MsSQL Database on server.
adpPRJ.Fill(dtTAB1)
dgFIN_TAB.DataSource = dtTAB1
我正在寻找 """ & strTAB & """ 的 C# 等效项。
此代码在 vb.net 中完美运行,没有错误。
谁能帮忙?
【问题讨论】:
-
那么您是否在 C# 中寻找连接运算符?它是 + 但有时您可能必须首先转换为字符串。我建议重命名标题。
-
此代码是SQL injection 等待发生的灾难。
-
我已经尝试在 C# 中将 & 更改为 +。但它不起作用。
-
无论如何你的问题的答案都可以在这里找到,我希望:docs.microsoft.com/en-us/dotnet/csharp/how-to/…。你有没有试过用谷歌搜索这个?这是一个非常基本的语言概念。这并不像将 & 替换为 + 那样简单,您还需要应对引号的转义。但是如果你修复了你的 SQL 注入漏洞,你就不必处理它了。我担心您似乎让用户控制几乎整个正在执行的 SQL 语句。这是您代码中的一个严重漏洞。
-
(注意,如果您尝试更改选择的表名,那么参数化实际上并不能帮助您,因为您不能参数化表名,只能参数化变量/字段值. 相反,您需要将允许的表名列入白名单,以阻止用户对您的数据库执行任意 SQL)。