2017-10-04 120 views
-1

我刚刚开始将JDBC集成到我的工作中。JDBC SQL执行多行查询

我想在JDBC中执行以下SQL行。

DECLARE @a int 
SET @a = 1 
    UPDATE ptable SET p = @a, @[email protected]+1 WHERE joined = 1 

的Java代码看起来是这样的:

c = "DECLARE @a int " 
+ "SET @a = 1 " 
+ "UPDATE ptable SET p = @a, @[email protected]+1 WHERE joined = 1"; 
    try { 
     stmt.executeQuery(c); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

我不知道如果我使用不正确的方法。基本上我有一个存储整数值的列p,无论单元格中的数字是多少,我都希望每行增加1。当我尝试用增量更新每一行时,它会占用第一行,并将每行设置为相同的值,而不是逐个增加。

+0

MySQL或SQL服务器,因为'DECLARE @a int'是无效的MySQL的代码我们ed这样 –

回答

0

你的sql查询看起来不正确,你想完成什么(我假设你正在使用sql服务器)。如果你想通过1递增每一行无论什么单元格中的数字是您的查询应该是这样的:

DECLARE @a int 
SET @a = 1 
    UPDATE ptable SET p = p + @a 
    WHERE joined = 1 
要通过1和在这种情况下采取p和增量

,我不知道你为什么会需要的变量@a你可以只使用1

UPDATE ptable SET p = p + 1 
WHERE joined = 1 

在Java代码中,它看起来像:

c = "UPDATE ptable SET p = p + 1\n" 
    "WHERE joined = 11"; 
try { 
    stmt.executeQuery(c); 
} catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

该语句取第一个值,它决定为p,并将WHERE部分适用的那一行的每一行更新为该值。我想跟踪用户是否在系统中处于活动状态,如果是,则加入p,加入是BIT列。 – Shane

+0

我将用户名列作为主键,希望它可以更改每行的值,但它仍然以相同的方式运行。 – Shane