Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Strus - Datasource

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    42

    Strus - Datasource

    Ciao a tutti,
    ho un piccolo dubbio sul datasource che ho configurato senza problemi.


    Vorrei crearmi una classe Query che recupera l'oggetto connection con il datasource con un metodo che mi restituisce il resultset passandogli l'sql com parametro, in modo da utilizzarlo in tutte le Action di Struts, per poi popolare i vari oggetti.

    Il codice per ottenere una connessione tramite datasource è il seguente (documentazione Struts):


    public ActionForward
    execute(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) throws Exception
    {
    javax.sql.DataSource dataSource;
    java.sql.Connection myConnection;
    try {
    dataSource = getDataSource(request);
    myConnection = dataSource.getConnection();
    // do what you wish with myConnection
    } catch (SQLException sqle) {
    getServlet().log("Connection.process", sqle);
    } finally {
    //enclose this in a finally block to make
    //sure the connection is closed
    try {
    myConnection.close();
    } catch (SQLException e) {
    getServlet().log("Connection.close", e);
    }
    }
    }



    ma se provo a utuilizzare questa riga di codice nella mia classe Query:
    dataSource = getDataSource(request);

    il compilatore si incazza perche'?

    Ci sono altri metodi piu' eleganti?
    Non credo che non ci sia un sistema che ci evita di inserire in ogni Action il codice per ottenere la connessione,statement,ecc...
    Spero di essere stato chiaro.

    Grazie a tutti x la vs disponibilità
    Carmine

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    42
    Ho sbagliato qsa? Sono off topic?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    42
    Come non detto..

    Mi spiegate l'utilità di questo forum?

    Mah

    Non acpisco

  4. #4
    fatti una classe a parte e chiamala Database.java dove metti tutti i metodi di connessione,disconnessione ecc.....e poi ti richiami questi metodi dalla tua classe di lavoro che stai utilizzando

    Mo ti posto una classe Database che uso io.......

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class Database {

    private static final String driver = "org.gjt.mm.mysql.Driver";
    private String url = "jdbc:mysql://localhost:3306/Speaker?autoReconnect=true";
    private static final String username = "root";
    private static final String password = "admin";
    private Connection dbConnection = null;



    public Database() {
    if(dbConnection == null) {
    try {
    Class.forName(driver).newInstance();
    dbConnection = DriverManager.getConnection(url, username, password);
    dbConnection.setAutoCommit(true);
    } catch (Exception ex) {
    System.out.println("Failed to register MySQL Connector/J");
    return;
    }

    }
    }

    public Database(String host) {
    url = "jdbc:mysql://" + host + "/emasdb?autoReconnect=true";
    if(dbConnection == null) {
    try {
    Class.forName(driver).newInstance();
    dbConnection = DriverManager.getConnection(url, username, password);
    dbConnection.setAutoCommit(true);
    } catch (Exception ex) {
    System.out.println("Failed to register MySQL Connector/J");
    return;
    }

    }
    }

    public void changeHost(String host) {
    url = "jdbc:mysql://" + host + "/emasdb?autoReconnect=true";
    }



    public ResultSet executeQuery(String sqlString) throws Exception {
    if(dbConnection != null) {
    if(!(dbConnection.isClosed())) {
    Statement stmt = dbConnection.createStatement();
    return stmt.executeQuery(sqlString);
    }
    else {
    dbConnection = null;
    dbConnection = DriverManager.getConnection(url, username, password);
    dbConnection.setAutoCommit(true);
    Statement stmt = dbConnection.createStatement();
    return stmt.executeQuery(sqlString);
    }
    }
    else {
    Class.forName(driver).newInstance();
    dbConnection = DriverManager.getConnection(url, username, password);
    dbConnection.setAutoCommit(true);
    Statement stmt = dbConnection.createStatement();
    return stmt.executeQuery(sqlString);
    }
    }

    public int executeOperation(String sqlString) throws Exception {
    if(dbConnection != null) {
    if(!(dbConnection.isClosed())) {
    Statement stmt = dbConnection.createStatement();
    int tResult = stmt.executeUpdate(sqlString);
    stmt.close();
    return tResult;
    }
    else {
    dbConnection = null;
    dbConnection = DriverManager.getConnection(url, username, password);
    dbConnection.setAutoCommit(true);
    Statement stmt = dbConnection.createStatement();
    int tResult = stmt.executeUpdate(sqlString);
    stmt.close();
    return tResult;
    }
    }
    else {
    Class.forName(driver).newInstance();
    dbConnection = DriverManager.getConnection(url, username, password);
    dbConnection.setAutoCommit(true);
    Statement stmt = dbConnection.createStatement();
    int tResult = stmt.executeUpdate(sqlString);
    stmt.close();
    return tResult;
    }
    }

    public void disconnect() throws SQLException {
    dbConnection.close();
    dbConnection = null;
    return;
    }
    }

    Cambia i parametri in alto con i tuoi.....dovrebbe andare....almeno a me va
    Cancellato stare lucido dal mio vocabolario -Speaker Cenzou-

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.