[英]Retrieve data from MongoDB collection into Swing JTable
I am a newbie in database projects. 我是数据库项目的新手。 I don't know how to display a collection in mongodb inside a swing window (EDIT: JTable) after connecting it to the database server....plz help me out in this... I have tried doing this in sql but am not able to do using mongodb 将它连接到数据库服务器后,我不知道如何在mongodb中的mongodb中显示一个集合。...plz在此方面帮助了我...我曾尝试在sql中这样做无法使用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 is meant to be iterated through. DBCursor旨在被迭代。 You can use the DBCursor#hasNext()
like you would a normal Iterator
, and the DBCursor#next()
to get the next DBObject
. 您可以像使用普通的Iterator
一样使用DBCursor#hasNext()
也可以使用DBCursor#next()
来获取下一个DBObject
。 The DBObject
allows you to get
values like you would a Map
, by passing in the key DBObject
允许您通过传入键来get
与Map
相似的值
So let's say we have a collection table
in the swingtest
database, with the following documents 假设我们在swingtest
数据库中有一个收集table
,其中包含以下文档
{ "_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" }
You haven't actually specified what you want to do with the collection, so let's say you want to add the data to a JTable
, you could do something like 您实际上并没有指定要对集合进行的操作,所以假设您要将数据添加到JTable
,可以执行以下操作
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();
}
where for each iteration (document), we get the _id
, first
and last
values, then create a row in which we add the DefaultTableModel
. 对于每个迭代(文档),我们在其中获得_id
, first
和last
值,然后创建一行,在其中添加DefaultTableModel
。 At the end of the iterating, we set the model for the JTable
. 在迭代的最后,我们为JTable
设置了模型。
Here's the full example 这是完整的例子
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 MongoStackoverflow {
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(MongoStackoverflow.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (cursor!= null) {
cursor.close();
}
if (mongoClient != null) {
mongoClient.close();
}
}
}
};
}
Resource 资源
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.