相关疑难解决方法(0)

使用JDBC,如何将多个ID替换为"DELETE FROM T WHERE id IN(?)"

我有一些代码生成一组我想从数据库表中删除的主键值.

long[] keysToDelete = { 0, 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

我想使用PreparedStatement执行相当于

DELETE FROM MyTable WHERE myPrimaryKey IN (0, 1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

知道怎么样?

java sql jdbc prepared-statement

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

如何使用python在sql中选择一个很长的id列表

我有一个非常大的数据库,我正在使用,我需要知道如何选择一组没有任何实际模式的id.这是我到目前为止的代码段:

longIdList = [1, 3, 5 ,8 ....................................]
for id in longIdList
    sql = "select * from Table where id = %s" %id
    result = cursor.execute(sql)
    print result.fetchone()
Run Code Online (Sandbox Code Playgroud)

我在想,必须有一个更快的方法来做到这一点......我的意思是我的脚本需要搜索一个拥有超过400万id的数据库.有没有办法可以使用select命令一次性抓取它们.我可以使用带有id列表的where语句吗?谢谢

python sql

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

递归SQL将CSV拆分为表行

在SO上处理一个不同的问题之后,我偶然发现了递归的CTE,表面上似乎是解决"将csv拆分为表行"问题的一种相当简单的方法.

我把这个例子放在一起

DECLARE @InputString varchar(255) = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z'

SELECT @InputString = @InputString + ','
;
with MyCTE(x,y)
as 
(
    SELECT 
        x = SUBSTRING(@InputString,0,PATINDEX('%,%',@InputString)),
        y = SUBSTRING(@InputString,PATINDEX('%,%',@InputString)+1,LEN(@InputString))
    UNION ALL
        SELECT 
            x = SUBSTRING(y,0,PATINDEX('%,%',y)),
            y = SUBSTRING(y,PATINDEX('%,%',y)+1,LEN(y))
        FROM 
            MyCTE 
        WHERE
                SUBSTRING(y,PATINDEX('%,%',y)+1,LEN(y)) <> '' OR 
            SUBSTRING(y,0,PATINDEX('%,%',y)) <> ''
)
SELECT x FROM MyCTE
OPTION (MAXRECURSION 2000);
GO
Run Code Online (Sandbox Code Playgroud)

这真是个坏主意吗?对于像这样的递归查询,SQL的开销是多少,以及这种方法的潜在缺陷是什么.

顺便说一句,我想这样的想法/技术很可能被利用来解决这个问题的其他问题.

csv recursive-query sql-server-2008

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

必须在Select命令中声明标量变量

我正在传递一长串employeeId,employeeIdlist并将它们分成一个List.使用此列表我将向查询添加参数.我收到以下错误

{"必须声明标量变量\"@ EmployeeId \"."}

public List<versionInfo> GetVersion(string  employeeIdlist)
{
    DbHelper helper = new DbHelper();
    List<versionInfo> empVerInfo = new List<versionInfo>();

    using (SqlConnection conn = new SqlConnection(connString))
    {              
        conn.Open();
        using (SqlCommand getVersion = new SqlCommand())
        {
            getVersion.Connection = conn;
            getVersion.CommandText = @"SELECT EmployeeId,Version 
                                                FROM [dbo].[EmployeeVersion]
                                                WHERE EmployeeId in (@EmployeeId)";

            getVersion.CommandType = CommandType.Text;
            List<int> empIds = employeeIdlist.Split(',').Select(int.Parse).ToList();
            StringBuilder sb = new StringBuilder();
            int i = 0;
            foreach (var emp in empIds)
            {
                // IN clause
                sb.Append("@EmployeeId" + i.ToString() + ",");
                // …
Run Code Online (Sandbox Code Playgroud)

c# sql-server

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

如何在SQL的WHERE语句中使用一组字符串?

对不起,我不知道如何很好地标题.我想在sql中选择一些特定列是一组字符串的记录.

例子.我有一个表学生,并且有列ID和名称.ID有1,2,3,4,5,6的记录.NAme具有A,B,C,D,E,F.

我想返回C,D,E WHERE ID = [3,4,5].

我试过了

SELECT FROM student WHERE ID=2,3,4
Run Code Online (Sandbox Code Playgroud)

它给出了错误ID =2,3,4 ='2,3,4',它将ID作为单个列读取.我很迷惑.

同样在我的例子中,ID set在storedprocedure变量中返回.就像@ID一样

SELECT * FROM STUDENT WHERE ID=@ID 
Run Code Online (Sandbox Code Playgroud)

上面的@ID是一个包含集合{1,2,3}的字符串类型的变量.请任何帮助将不胜感激.

c# sql-server select sql-server-2008

0
推荐指数
1
解决办法
218
查看次数

SQL注入——将数据插入表中

因此,我尝试在本地托管的网页上练习 SQL 注入。我对 SQL 很陌生,尤其是 SQL 注入。我已经做了一些研究,将新条目注入表中,但是当我尝试执行时,它似乎不起作用。

首先,我的网页是登录的。我有用户名和密码(显然)并且可以在不附加任何 SQL 注入的情况下登录。但是当我将注入代码添加到用户名框中时,它不起作用。例子:

    username: admin'; insert into hall values (3,'https://google.com','Google'); --
    password: 123321
Run Code Online (Sandbox Code Playgroud)

在我的大厅表中,有 3 个条目:id、链接、目的地。ID 是一个整数,链接和目标是 varchars。

我需要做什么才能成功注入并将此条目添加到数据库中?是需要输入正确的用户名和密码,还是只输入用户名,还是其他什么?

php mysql sql sql-injection

0
推荐指数
1
解决办法
7034
查看次数

如何有选择地基于变量应用WHERE IN子句?

我有一个存储过程,需要按以逗号分隔的列表(即'1,2,3')传递的ID列表进行过滤。

我想应用WHERE IN将与这些ID匹配的子句,但仅在变量包含任何内容(IS NOT NULL AND <> '')的情况下。

这是问题的简化提琴:http : //sqlfiddle.com/#!18/5f6be/1

目前,它适用于单个和多个ID。但是,通过时''NULL它应该返回所有内容,但不返回任何内容。

出现CTE和分页的内容是有原因的,请提供一个不会改变它的解决方案。

sql sql-server where-in sql-server-2016 azure-sql-database

0
推荐指数
1
解决办法
78
查看次数