10
votes

Insérer des données et si déjà inséré, puis mettez à jour en SQL

Je veux simplement insérer les données sur une table de base de données SQL et si certaines données sont déjà insérées, je souhaite mettre à jour ces données. Comment puis-je faire cela en utilisant Java. Aimablement m'aider et désolé pour le mauvais anglais à l'avance.


3 commentaires

Dupliqué possible de Comment uPser (mettre à jour et insérer) dans SQL Server 2005


Quelle base de données? Serveur SQL? Mysql? PostgreSQL? DB2? Oracle?


Utilisez-vous un cadre orm?


7 Réponses :


2
votes

Vous devez d'abord vérifier les données existantes dans le tableau Si vous existez, utilisez la requête de mise à jour, sinon insérez des données. Son simple


0 commentaires

3
votes

Il suffit d'identifier l'élément unique dans votre jeu de données (comme ID ou un code ). Ensuite, en utilisant cela, essayez d'effectuer une question Select d'abord. Si les résultats sont vides, effectuez l'insert ESSAYEZ MISE À JOUR Les détails.


0 commentaires

4
votes

Vous pouvez utiliser le existe Mot clé pour vérifier l'existence de lignes: xxx


1 commentaires

Il est plus efficace de simplement exécuter la mise à jour et de vérifier combien de lignes ont été mises à jour.



2
votes

essayer de suivre la manière suivante:

Exemple de requête

Insérer dans la table (ID, Nom, Ville) (1, "ABC", "XYZ") sur la mise à jour de la clé en double
Nom = "abc", ville = "xyz"

Pour plus d'aide Voir la documentation. Cliquez ici


0 commentaires

1
votes

définissez n'importe quel champ comme identité unique. Pour un exemple, considérez que les détails de l'employé doivent être entrés dans le nom de la table ** Employeeeedtails. ** Dans ce cas, Employment_ID peut être considéré comme unique.

Utilisez Sélectionnez Query Sélectionnez * à partir de l'emploi de l'emploi où Employee_id = "L'unique keyvalue"; Si les Resulatset ne sont pas vides, utilisez Update Query pour mettre à jour les champs.

Mettre à jour Emaileedtails Ensemble Employee_id = ?, Full_Name =?, désignation = ?, e-mail_id = ?, mot de passe =? où employé_id = '" + id + "'"; Si les résultatssets sont vides, utilisez la requête d'insertion pour insérer les valeurs sur la table

Insérer dans les valeurs d'emploi (...)


0 commentaires

6
votes

L'instruction SQL standard pour insert code> (si nouveau) ou update code> (si existe) est appelé fusion code> strong> .

Puisque vous n'avez pas précisé quelle dialecte DBMS vous posez des questions, je vous référerai à l'article Wikipedia " fusion (SQL) ", qui couvre la plupart des dialectes SGBM. Résumé: P>

MERGE INTO tablename USING table_reference ON (condition)
WHEN MATCHED THEN
  UPDATE SET column1 = value1 [, column2 = value2 ...]
WHEN NOT MATCHED THEN
  INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...])


3 commentaires

La question était liée à Java (JDBC.HSQL ou d'autres ORM).


@Eddybayonne Oui, et vous pouvez également exécuter ces déclarations SQL de Java. Rien dans la question ne dit orm, alors exécutez SQL à l'aide de JDBC est une réponse parfaitement valide.


Nous devrions préférer la stratégie qui termine le travail dans une connexion et une déclaration. Côté de réponses ci-dessus Les sutrations sont meilleures pour éviter plusieurs ouvertures de connexion et impact de performance dans le lot.



2
votes
package com.stackwork;

//STEP 1. Import required packages
import java.sql.*;
import java.util.Scanner;

public class Updation {
   // JDBC driver name and database URL
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/Employee";

   //  Database credentials
   static final String USER = "root";
   static final String PASS = "admin";
   private static Scanner sc;

   public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   try{
      //STEP 2: Register JDBC driver
      Class.forName("com.mysql.jdbc.Driver");
      //STEP 3: Open a connection
      System.out.println("Connecting to database...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //STEP 4: Execute a query
      System.out.println("Creating statement...");
      stmt = conn.createStatement();
      String sql;
      //STEP 5: Get the employee_id for whom data need to be updated/inserted
      sc = new Scanner(System.in);
      System.out.println("Enter the Employee_id for the record to be updated or inserted");
      int Emp_idvalue=sc.nextInt();
      sql = "SELECT * FROM EmployeeDetails where Emp_id="+Emp_idvalue;
      ResultSet rs = stmt.executeQuery(sql);
      if (!rs.next())
      {
          //STEP 6: If the previous details is not there ,then the details will be inserted newly
          System.out.println("Enter the name to be inserted");
          String Emp_namevalue =sc.next();
          System.out.println("Enter the address to be inserted");
          String Emp_addvalue =sc.next();
          System.out.println("Enter the role to be inserted");
          String Emp_rolevalue =sc.next();
          PreparedStatement ps = conn
                    .prepareStatement("insert into EmployeeDetails values(?,?,?,?)");
            ps.setString(2, Emp_namevalue);
            ps.setString(3, Emp_addvalue);
            ps.setString(4, Emp_rolevalue);
            ps.setInt(1, Emp_idvalue);
            ps.executeUpdate();
            System.out.println("Inserted successfully");
      }
      else
      {
        //STEP 7: If the previous details is  there ,then the details will be updated 
          System.out.println("Enter the name to be updated");
          String Emp_namevalue =sc.next();
          System.out.println("Enter the address to be updated");
          String Emp_addvalue =sc.next();
          System.out.println("Enter the role to be updated");
          String Emp_rolevalue =sc.next();
          String updateQuery = "update EmployeeDetails set Emp_id=?,Emp_name=?, Emp_address=?, Emp_role=? where Emp_id='"
                    + Emp_idvalue + "'";
            PreparedStatement ps1 = conn.prepareStatement(updateQuery);
            ps1.setString(2, Emp_namevalue);
            ps1.setString(3, Emp_addvalue);
            ps1.setString(4, Emp_rolevalue);
            ps1.setInt(1, Emp_idvalue);
            ps1.executeUpdate();    
            System.out.println("updated successfully");

      }
      //Clean-up environment
      rs.close();
      stmt.close();
      conn.close();
   }catch(SQLException se){
      //Handle errors for JDBC
      se.printStackTrace();

   }catch(Exception e){
      //Handle errors for Class.forName
      e.printStackTrace();
  }
}
}

0 commentaires