2017-10-04 3 views
-1

J'ai récemment commencé à intégrer JDBC dans mon travail. J'essaie d'exécuter les lignes SQL suivantes dans JDBC.JDBC SQL exécuter une requête avec plusieurs lignes

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

Le code Java ressemble à ceci:

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(); 
    } 

Je ne sais pas si j'utilise une méthode incorrecte. Fondamentalement, j'ai une colonne p qui stocke des valeurs entières, je veux incrémenter chaque ligne de 1, quel que soit le nombre dans la cellule. Lorsque j'essaie de mettre à jour chaque ligne avec un incrément, il prend la première ligne et place chaque ligne à la même valeur plutôt que d'incrémenter chacune individuellement.

+0

MySQL ou SQL-server, car 'DECLARE @a int' est invalide le code de MySQL nous ed comme ça –

Répondre

0

Votre requête sql ne semble pas correcte pour ce que vous essayez d'accomplir (je suppose que vous utilisez sql server). si vous voulez incrémenter chaque ligne de 1 quel que soit le nombre dans la cellule est votre requête devrait ressembler à ceci:

DECLARE @a int 
SET @a = 1 
    UPDATE ptable SET p = p + @a 
    WHERE joined = 1 

vous voulez prendre p et l'incrément de 1 et dans ce cas, je ne suis pas sûr pourquoi vous auriez besoin la variable @a vous pouvez simplement utiliser 1

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

Dans le code java il ressemble:

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

Cette instruction prend la première valeur qu'elle décide d'être p et met à jour chaque ligne à cette valeur où la partie WHERE est applicable. Je veux suivre si un utilisateur est actif dans le système et augmenter p si elles le sont, joint est une colonne BIT. – Shane

+0

J'ai fait de la colonne du nom d'utilisateur une clé primaire dans l'espoir qu'elle pourrait changer la valeur de chaque ligne mais elle se comporte toujours de la même manière. – Shane