相关疑难解决方法(0)

参数化SQL IN子句

如何参数化包含IN具有可变数量参数的子句的查询,比如这个?

SELECT * FROM Tags 
WHERE Name IN ('ruby','rails','scruffy','rubyonrails')
ORDER BY Count DESC
Run Code Online (Sandbox Code Playgroud)

在此查询中,参数的数量可以是1到5之间的任何值.

我不希望为此(或XML)使用专用存储过程,但如果有一些特定于SQL Server 2008的优雅方式,我对此持开放态度.

sql sql-server parameters

1020
推荐指数
29
解决办法
33万
查看次数

可利用的C#函数

此问题类似于可利用的PHP函数.

受污染的数据来自用户,或者更具体地来说是攻击者.当受污染的变量达到接收器功能时,您就会有漏洞.例如,执行sql查询的函数是接收器,而GET/POST变量是污点源.

C#中的所有接收器功能是什么?我正在寻找引入漏洞或软件弱点的功能.我对远程执行代码漏洞特别感兴趣.是否存在整个类/库,其中包含黑客想要影响的功能恶劣?人们如何不小心制作危险的C#代码?

c# security

69
推荐指数
11
解决办法
1万
查看次数

将一个充满逗号分隔值的varchar传递给SQL Server IN函数

使用Like和In 复制
动态SQL逗号分隔值查询
参数化查询

我有一个SQL Server存储过程,我想将一个varchar逗号分隔的值传递给一个IN函数.例如:

DECLARE @Ids varchar(50);
SET @Ids = '1,2,3,5,4,6,7,98,234';

SELECT * 
FROM sometable 
WHERE tableid IN (@Ids);
Run Code Online (Sandbox Code Playgroud)

这当然不起作用.我收到错误:

将varchar值'1,2,3,5,4,6,7,98,234'转换为数据类型int时转换失败.

如何在不诉诸构建动态SQL的情况下完成此任务(或相对类似的东西)?

sql t-sql sql-server sql-in

53
推荐指数
9
解决办法
17万
查看次数

将列与t-sql中的值列表进行比较

我有一种情况,我在页面上显示记录,我需要一种方法让用户选择要在另一页上显示的那些记录的子集.这些记录不存储在任何地方,它是动态生成的东西.我知道我可以使用jquery将逗号分隔的值传递给我的其他网页,但我不确定在sql中最好的方法是说哪个uniqueid在这个id列表中不在表等中我我知道我可以用一堆ors动态构造sql,但这看起来像是一个黑客.还有其他人有什么建议吗?

t-sql sql-server

5
推荐指数
1
解决办法
1万
查看次数

在LINQ-to-SQL的ExecuteQuery中使用IN子句

LINQ to SQL在翻译我的一个查询时做了很糟糕的工作,所以我手工重写了它.问题是重写必然涉及一个IN条款,我不能为我的生活弄清楚如何ExecuteQuery为此目的传递集合.我在这里看到的唯一可以提出的就是使用string.Format整个查询字符串来克服它 - 但这会阻止查询在查询缓存中结束.

这样做的正确方法是什么?

注意:请注意我使用的原始SQL传递给 ExecuteQuery.我在第一句话中说过.告诉我使用Contains是没有用的,除非你知道一种混合Contains原始SQL的方法.

linq sql-server linq-to-sql

4
推荐指数
1
解决办法
2070
查看次数

喜欢条款和准备好的声明

我正在尝试使用预备语句使用LIKE子句发出SQL请求.

这是代码:

using (SqlConnection Connection = new SqlConnection(ConnectionString))
      {
         Connection.Open();
         string Query = "SELECT TOP 10 Field FROM Table WHERE Field LIKE '@pseudopart%'";
                using (SqlCommand Command = new SqlCommand(Query, Connection))
                {
                    Command.Parameters.AddWithValue("@pseudopart", pseudoPart);
                    using (SqlDataReader Reader = Command.ExecuteReader())
                    {
                        if (!Reader.HasRows)
                            return PossibleMatch;
                        while (Reader.Read())
                        {
                            PossibleMatch.Add(Reader["Field"].ToString());
                        }
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

读者永远是空的,我做错了什么?

c# sql

4
推荐指数
1
解决办法
1150
查看次数

从VB.NET构建动态sql查询

我搜索并搜索了一个答案,我找不到一个.我有一个选中的列表框,用户可以选择他们在计算机上遇到的问题.在选中的列表框中,您将看到诸如......慢,病毒,坏硬盘......以及根据他们选择的内容,我将告诉他们估计的维修费用.目前这是我构建查询的方式:

Dim mIssues As String = ""

For i = 0 To lstIssues.CheckedItemsCount - 1
 If mIssues = "" Then
  mIssues = String.Format("IssueName = '{0}'", lstIssues.CheckedItems(i))
 Else
  mIssues = String.Format("{0} OR IssueName = '{1}'", mIssues, lstIssues.CheckedItems(i))               
 End If
Next
Run Code Online (Sandbox Code Playgroud)

上面的代码将查看他们选择了多少问题.如果他们只选择一个问题,那么它将返回如下字符串:IssueName ='无论他们选择什么'.如果他们选择了多个问题,它将返回如下字符串:IssueName ='无论选择何种'或IssueName ='第二个选择'.因此,如果他们选择多个问题,我会在所有选项之间附加一个OR.我这样做是为了在我的查询中动态构建我的where子句.

这是我的查询:

Dim mySQL As String = "SELECT IssueID, IssueTypeID, IssueName, IssueDescription, " _
  & "CustomerID, IndividualCost, GroupCost, Active, ChargeType " _
  & "FROM (SELECT IssueID, IssueTypeID, IssueName, IssueDescription, " _
  & "CustomerID, IndividualCost, GroupCost, Active, ChargeType " …
Run Code Online (Sandbox Code Playgroud)

sql vb.net

2
推荐指数
1
解决办法
7045
查看次数

标签 统计

sql ×4

sql-server ×4

c# ×2

t-sql ×2

linq ×1

linq-to-sql ×1

parameters ×1

security ×1

sql-in ×1

vb.net ×1