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. P>
7 Réponses :
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 p>
Il suffit d'identifier l'élément
Vous pouvez utiliser le existe code> Mot clé pour vérifier l'existence de lignes:
Il est plus efficace de simplement exécuter la mise à jour et de vérifier combien de lignes ont été mises à jour.
essayer de suivre la manière suivante: p>
Exemple de requête forte> p>
Insérer dans la table (ID, Nom, Ville) (1, "ABC", "XYZ") sur la mise à jour de la clé en double Pour plus d'aide Voir la documentation.
Cliquez ici P>
Nom = "abc", ville = "xyz" p>
Utilisez 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 p>
Insérer dans les valeurs d'emploi (...) p>
L'instruction SQL standard pour 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> insert code> (si nouveau) ou update code> (si existe) est appelé fusion code> strong> .
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 ...])
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.
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();
}
}
}
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?