将MongoDB集合中的数据检索到Swing JTable中

我是数据库项目的新手。 在将它连接到数据库服务器后,我不知道如何在一个摆动窗口(EDIT:JTable)内的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旨在通过迭代。 您可以像使用普通Iterator一样使用DBCursor#hasNext() ,使用DBCursor#next()来获取下一个DBObjectDBObject允许您通过传入键来getMap

因此,假设我们在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" } 

你还没有实际指定你想要对集合做什么,所以假设你想要将数据添加到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(); } 

对于每次迭代(文档),我们获取_idfirstlast值,然后创建一行,我们在其中添加DefaultTableModel 。 在迭代结束时,我们为JTable设置模型。

这是完整的例子

在此处输入图像描述

 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(); } } } }; } 

资源

  • MongoDB Java API入门指南
  • MongoDB Java API文档
  • 如何使用表格