留言板
Obtener Conexion BD
Hola a tod@s
Estoy adaptando el portlet journal y necesito hacer una select para obtener la última versión de un artículo. La duda es cómo puedo obtener la conexión con la BD para poder realizar mi select.
¿Cual es la mejor forma de obtener la conexión con la BD (mysql) y poder realizar la consulta que necesito?
Espero que me haya explicado bien.
Saludos.
Estoy adaptando el portlet journal y necesito hacer una select para obtener la última versión de un artículo. La duda es cómo puedo obtener la conexión con la BD para poder realizar mi select.
¿Cual es la mejor forma de obtener la conexión con la BD (mysql) y poder realizar la consulta que necesito?
Espero que me haya explicado bien.
Saludos.
par apoder realizar consultas ... podes utilizar los servicios q te brinda liferay
aca te pongo un ejemplo
*
import com.liferay.portal.kernel.dao.jdbc.DataAccess;
import com.sun.rowset.CachedRowSetImpl;
*
static private void Conectar() {
try {
if (con == null){
con =DataAccess.getConnection();
stmt = con.createStatement();
}
if (con.isClosed()){
con =DataAccess.getConnection();
stmt = con.createStatement();
} //System.out.println("\n Conectados: "+usando+"\n");
} catch (Exception e) {
System.out.println("Se produjo un error inesperado en la Conection: " + con + e.getMessage());
}
}
/**
* @param sql
* @return
*/
static public CachedRowSetImpl consultaDB(String sql) {
try {
Conectar();
CachedRowSet crs = new CachedRowSetImpl();
ResultSet resultSet = stmt.executeQuery(sql);
crs.populate(resultSet);
rs = (CachedRowSetImpl )crs;
}
catch (SQLException ex) {
// Mostramos toda la informacion sobre el error disponible
System.out.println("Error: SQLException");
while (ex != null) {
System.out.println("SQL: " + sql);
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("Mensaje: " + ex.getMessage());
ex = ex.getNextException();
}
}
return rs;
}
saludos
Pablo
aca te pongo un ejemplo
*
import com.liferay.portal.kernel.dao.jdbc.DataAccess;
import com.sun.rowset.CachedRowSetImpl;
*
static private void Conectar() {
try {
if (con == null){
con =DataAccess.getConnection();
stmt = con.createStatement();
}
if (con.isClosed()){
con =DataAccess.getConnection();
stmt = con.createStatement();
} //System.out.println("\n Conectados: "+usando+"\n");
} catch (Exception e) {
System.out.println("Se produjo un error inesperado en la Conection: " + con + e.getMessage());
}
}
/**
* @param sql
* @return
*/
static public CachedRowSetImpl consultaDB(String sql) {
try {
Conectar();
CachedRowSet crs = new CachedRowSetImpl();
ResultSet resultSet = stmt.executeQuery(sql);
crs.populate(resultSet);
rs = (CachedRowSetImpl )crs;
}
catch (SQLException ex) {
// Mostramos toda la informacion sobre el error disponible
System.out.println("Error: SQLException");
while (ex != null) {
System.out.println("SQL: " + sql);
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("Mensaje: " + ex.getMessage());
ex = ex.getNextException();
}
}
return rs;
}
saludos
Pablo
hola pablo Consulta.. si yo quiero utilizar un formulario donde quiero acceder a los datos de mi bd, en donde iria ese codigo???
muchas gracias
muchas gracias
Hola Pablo, tu mensaje me fue de utilidad. Estoy portlets sencillos utilizando consultas sql directas como tu propones, pero me encuentro con un problema. A los minutos de trabajar con el portlet en cuestión, en liferay 5.2.3 resulta que el portal deja de responder al menos la parte web. Muy extraño y sólo me pasa cuando tengo instalado el portlet que hace las consultas sql utilizando DataAccess.getConnection() , así que concluyo que algo debo estar haciendo mal. Algunas preguntas:
¿ cuál es la forma adecuada de trabajar con el object Connection devuelto por DataAccess.getConnection() ?
es decir, ¿no te preocupas por cerrar los objetos Statements y result set con close()? ¿debes tratar siempre de utilizar el mismo objeto connection o debes cerrarlo y crearlo cada vez que vas a hacer una consulta?
y otra pregunta, ¿es necesario utilizar los objetos CachedRowSet, o puedo trabajar directamente con los objetos jdbc java.sql.ResultSet, etc?
gracias de antemano, y se agradece también cualquier sugerencia sobre el problema q yo estoy teniendo
¿ cuál es la forma adecuada de trabajar con el object Connection devuelto por DataAccess.getConnection() ?
es decir, ¿no te preocupas por cerrar los objetos Statements y result set con close()? ¿debes tratar siempre de utilizar el mismo objeto connection o debes cerrarlo y crearlo cada vez que vas a hacer una consulta?
y otra pregunta, ¿es necesario utilizar los objetos CachedRowSet, o puedo trabajar directamente con los objetos jdbc java.sql.ResultSet, etc?
gracias de antemano, y se agradece también cualquier sugerencia sobre el problema q yo estoy teniendo
Porque no utilizas el metodo dynamicQuery de JournalArticleLocalServiceUtil.
Saludos
Saludos