相关疑难解决方法(0)

PreparedStatement IN子句替代?

将SQL IN子句与实例一起使用的最佳解决方法java.sql.PreparedStatement是什么,由于SQL注入攻击安全问题,多个值不支持这种解决方法:一个?占位符代表一个值,而不是值列表.

请考虑以下SQL语句:

SELECT my_column FROM my_table where search_column IN (?)
Run Code Online (Sandbox Code Playgroud)

使用preparedStatement.setString( 1, "'A', 'B', 'C'" );本质上是一种非工作尝试,?首先使用的原因是解决方法.

有哪些变通方法?

java security jdbc prepared-statement in-clause

328
推荐指数
9
解决办法
31万
查看次数

如何将数组传递给SQL Server存储过程

如何将数组传递给SQL Server存储过程?

例如,我有一份员工清单.我想将此列表用作表,并将其与另一个表连接.但是员工列表应该作为参数从C#传递.

c# t-sql sql-server stored-procedures

275
推荐指数
10
解决办法
35万
查看次数

如何将表值参数从.net代码传递给存储过程

我有一个MS SQL Server 2005数据库.在一些过程中,我将表参数作为nvarchar(以逗号分隔)传递给存储过程,并在内部划分为单个值.我将它添加到SQL命令参数列表中,如下所示:

cmd.Parameters.Add("@Logins", SqlDbType.NVarchar).Value = "jim18,jenny1975,cosmo";
Run Code Online (Sandbox Code Playgroud)

我必须将数据库迁移到SQL Server 2008.我知道有表值参数,我知道如何在存储过程中使用它们.但我不知道如何将一个传递给SQL命令中的参数列表.有谁知道Parameters.Add程序的正确语法?或者是否有另一种传递此参数的方法?

c# sql-server stored-procedures sqlcommand table-valued-parameters

162
推荐指数
4
解决办法
26万
查看次数

定义要与IN运算符一起使用的变量(T-SQL)

我有一个使用IN运算符的Transact-SQL查询.像这样的东西:

select * from myTable where myColumn in (1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

有没有办法定义一个变量来保存整个列表"(1,2,3,4)"?我该如何定义它?

declare @myList {data type}
set @myList = (1,2,3,4)
select * from myTable where myColumn in @myList
Run Code Online (Sandbox Code Playgroud)

sql t-sql

125
推荐指数
9
解决办法
18万
查看次数

Dapper是否支持SQL 2008表值参数?

有谁知道是否可以使用Dapper 将表值参数数据传递给存储过程?

.net dapper

75
推荐指数
4
解决办法
2万
查看次数

具有LIKE和IN条件的参数化查询

.Net中的参数化查询在示例中总是如下所示:

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID = @categoryid
", 
   conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
Run Code Online (Sandbox Code Playgroud)

但是我碰到了一堵砖墙试图做到以下几点:

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID IN (@categoryids) 
      OR  name LIKE '%@name%'
", 
   conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.Int);
comm.Parameters["@name"].Value = Name;
Run Code Online (Sandbox Code Playgroud)

哪里

  • CategoryID是以逗号分隔的数字列表"123,456,789"(不带引号)
  • Name是一个字符串,可能带有单引号和其他错误字符

什么是正确的语法?

.net sql parameters sql-injection parameterized

47
推荐指数
3
解决办法
3万
查看次数

SQL Server - 带有声明变量的In子句

假设我得到以下内容:

DECLARE @ExcludedList VARCHAR(MAX)

SET @ExcludedList = 3 + ', ' + 4 + ' ,' + '22'

SELECT * FROM A WHERE Id NOT IN (@ExcludedList)
Run Code Online (Sandbox Code Playgroud)

错误:将varchar值','转换为数据类型int时转换失败.

我理解为什么错误存在,但我不知道如何解决它...

sql in-clause sql-server-2008

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

C#包含值类型和字符串的通用约束

我正在尝试在IEnumerable上编写一个扩展方法,它只适用于值类型和字符串.

public static string MyMethod<T>(this IEnumerable<T> source) where T : struct, string
Run Code Online (Sandbox Code Playgroud)

但是'string'不是有效的约束,因为它是一个密封的类.

有没有办法做到这一点?

编辑:

我实际上要做的是为动态构造的SQL中的"IN"子句准备一个值列表.

我有很多代码实例,例如以下我要清理的代码:

sb.AppendLine(string.Format("AND value IN ({0})", string.Join(",", Values.Select(x => x.ToSQL()).ToArray())));
Run Code Online (Sandbox Code Playgroud)

ToSQL()具有处理SqlInjection的代码.

c# string generics constraints value-type

44
推荐指数
4
解决办法
3万
查看次数

MySQL:LIKE的反向版本是什么?

MySql中的LIKE运算符用于查找包含查询文本的行,例如:

select name from user where name like "%john%"
Run Code Online (Sandbox Code Playgroud)

这将返回John Smith,Peter Johnson等等.

如果我需要相反-找到那些行所载在我们的查询文本?例如,我给它John Smith and Peter Johnson are best friends并希望它找到表中可以在此字符串中找到的所有名称.

怎么做?

mysql sql

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

使用JDBC参数化IN子句的最佳方法是什么?

假设我有一个表单查询

SELECT * FROM MYTABLE WHERE MYCOL in (?)
Run Code Online (Sandbox Code Playgroud)

我想参数化参数.

有没有一种直接的方法在Java中使用JDBC,以一种可以在不修改SQL本身的情况下在多个数据库上工作的方式?

我发现的最接近的问题与C#有关,我想知道Java/JDBC是否有不同之处.

java sql jdbc in-clause

37
推荐指数
4
解决办法
6万
查看次数