0
votes

Comment exécuter 7 Sélectionnez une déclaration préparée en une fois dans MySQL?

private void view(HttpServletRequest request , HttpServletResponse response) throws ServletException, IOException{

        String logined_email = (String) session.getAttribute("e-mail");
        data = dbconn.viewMyData(logined_email);
        request.setAttribute("mydata", data);
        RequestDispatcher rd = request.getRequestDispatcher("myData.jsp");
        rd.forward(request, response);
}
public void dbconn() {

        try {
            String JDBC_Driver = "com.mysql.cj.jdbc.Driver";
            Class.forName(JDBC_Driver);
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/connectiondb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "");
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }

public void viewMyData(String login_email_addr){

    dbconn();
    String sql1 = "SELECT * From art_culture WHERE email = ? ";
    String sql2 = "SELECT * From education WHERE email =  ? ";
    String sql3 = "SELECT * From fashion_beauty WHERE email = ? ";
    String sql4 = "SELECT * From food_travel WHERE email = ? "; 
    String sql5 = "SELECT * From health_fitness WHERE email = ? ";
    String sql6 = "SELECT * From literature WHERE email = ? ";
    String sql7 = "SELECT * From nature_wildlife WHERE email = ? ";

}
The email value in condition is same for all queries.
view method is in servlet that is behaving as a controller.
viewMyData and dbconn are methods in dbConnection file.
I have these 7 sql prepared statement in viewMyData method and I want to execute them and I want to get the data from database after successful execution of queries and the result is send to the servlet page and then from servlet the output will be show on a JSP page.How Can I do that?

0 commentaires

4 Réponses :


0
votes
connection.setAutoCommit(false)
deactivates autocommits, that enable you to send a batch of all these preparedstatements, then just create a method that executes all these queries to the database and in a finally block, set the autocommit to true.Autocommit by default makes so that every transactions gets instantly saved in the database, with this behaviour, you can safely run all these queries as a one single atomic unit

0 commentaires

0
votes

Vous pouvez essayer:

  1. Via définir la propriété de connexion de base de données pour autoriser plusieurs requêtes (allemandMultiCeries = true) séparées par semi-points par défaut.

    Formatez votre demande de connexion, comme ci-dessous: xxx

    1. via un appel de procédure stocké qui retournera les curseurs implicites.

0 commentaires

0
votes

Vous pouvez combiner vos questions comme ceci: xxx

avec cela, vous obtiendrez un objet de 1 résultatsset. Remplacez les ellipsis par une liste séparée par des virgules de toutes vos tables.


0 commentaires

0
votes

Peu de problèmes que je vois dans votre question. Votre code est loin de ce que vous envisagez de le faire et de nombreuses lacunes sont remplies (même compiler des erreurs). Lorsque vous demandez de l'aide du forum, veuillez vous effort de construire votre question.

Peu de suggestions

  1. Création d'une connexion de base de données Chaque fois que vous appelez l'API n'est pas un bonnes pratiques. Comme c'est une opération coûteuse. Vous utilisez un mécanisme de mise en commun de la connexion. Là sont des bibliothèques qui le font pour vous. Voir ce post pour plus d'informations https://www.baeldung.com/java-connection-pooling .

  2. L'utilisation de données combinées à partir de 7 tables peut également apporter des problèmes de performance si ces Les tables grandissent grandir.Vous devez penser à un meilleur design si vous avez besoin ceux-ci doivent être rapides à long terme. Vous pouvez également ajouter des clés et des index primaires appropriés à ces tables et optimiser la requête SQL pour le rendre rapide.

  3. Utilisez quelques .properties fichier pour stocker les informations d'identification de la base de données.

    ici, j'ai utilisé interne rejoindre pour rejoindre vos 7 tables.

    Veuillez noter que le code ci-dessous n'est pas complet car je ne peux pas écrire un code complet lorsque votre code est incomplet. J'espère que cela vous suffira de vous avoir une idée. xxx

    Vous devez lire les données et remplir votre objet de données et le renvoyer à partir de cette méthode.

    J'espère que cela aide.


0 commentaires