español - mongodb to java class
Recuperar datos de la colección MongoDB en Swing JTable (1)
Soy un novato en proyectos de bases de datos. No sé cómo mostrar una colección en mongodb dentro de una ventana emergente (EDIT: JTable) después de conectarla al servidor de la base de datos ... Por favor, ayúdenme en esto ... He intentado hacer esto en sql pero estoy no poder hacer uso de mongodb
JButton btnDisplay = new JButton("display");
btnDisplay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
// To connect to mongodb server
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// Now connect to your databases
DB db = mongoClient.getDB( "test" );
System.out.println("Connect to database successfully");
DBCollection coll = db.getCollection("cars");
DBCursor cursor = coll.find();
}
catch (Exception a) {
a.printStackTrace();
}
}
});
DBCursor está destinado a ser iterado a través de. Puede usar DBCursor#hasNext()
como lo haría con un Iterator
normal, y DBCursor#next()
para obtener el siguiente DBObject
. DBObject
permite get
valores como lo haría con un Map
, pasando la clave
Entonces, digamos que tenemos una table
colección en la swingtest
datos de swingtest
, con los siguientes documentos
{ "_id" : ObjectId("5450700691a43786388fcc8f"), "first" : "Stack", "last" : "Overflow" }
{ "_id" : ObjectId("5450704d91a43786388fcc90"), "first" : "Pee", "last" : "Skillet" }
{ "_id" : ObjectId("5450705a91a43786388fcc91"), "first" : "Hello", "last" : "World" }
{ "_id" : ObjectId("545070b091a43786388fcc92"), "first" : "Mongo", "last" : "DB" }
En realidad, no ha especificado qué desea hacer con la colección, así que digamos que desea agregar los datos a una JTable
, podría hacer algo como
MongoClient mongoClient = null;
DBCursor cursor = null;
try {
mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "swingtest" );
DBCollection coll = db.getCollection("table");
cursor = coll.find();
String[] columnNames = {"id", "First", "Last"};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
while(cursor.hasNext()) {
DBObject obj = cursor.next();
String first = (String)obj.get("first");
String last = (String)obj.get("last");
ObjectId id = (ObjectId)obj.get("_id");
model.addRow(new Object[] { id, first, last });
}
table.setModel(model);
cursor.close();
mongoClient.close();
}
donde para cada iteración (documento), obtenemos el _id
, first
y last
valor, luego creamos una fila en la cual agregamos el DefaultTableModel
. Al final de la iteración, configuramos el modelo para JTable
.
Aquí está el ejemplo completo
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import org.bson.types.ObjectId;
public class Mongo {
private static JTable table;
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
table = new JTable(){
@Override
public Dimension getPreferredScrollableViewportSize() {
return new Dimension(300, 150);
}
};
JPanel panel = new JPanel(new BorderLayout());
JButton button = new JButton("Show Data");
button.addActionListener(listener);
panel.add(new JScrollPane(table));
panel.add(button, BorderLayout.PAGE_END);
JOptionPane.showMessageDialog(null, panel);
}
};
SwingUtilities.invokeLater(runnable);
}
static ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MongoClient mongoClient = null;
DBCursor cursor = null;
try {
mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "swingtest" );
DBCollection coll = db.getCollection("table");
cursor = coll.find();
String[] columnNames = {"id", "First", "Last"};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
while(cursor.hasNext()) {
DBObject obj = cursor.next();
String first = (String)obj.get("first");
String last = (String)obj.get("last");
ObjectId id = (ObjectId)obj.get("_id");
model.addRow(new Object[] { id, first, last });
}
table.setModel(model);
cursor.close();
mongoClient.close();
} catch (UnknownHostException ex) {
Logger.getLogger(Mongo.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (cursor!= null) {
cursor.close();
}
if (mongoClient != null) {
mongoClient.close();
}
}
}
};
}
Recurso