[英]How to display data from MS Access database in a JTable?
我目前正在 NetBeans IDE 中开发一个程序。 我创建了一个不错的 GUI,并且创建了我的 MS Access 数据库。 我在JTable
中显示 MS Access 数据时遇到问题。 我想避免使用向量,正如我在互联网上找到的大多数教程所示,因为我还在高中,而且这些知识超出了我的范围。
任何指向正确方向的指针将不胜感激!
这是我的代码:
String[] columnNames = {"First Name",
"Last Name",
"Category",
"Amount"
};
Object[] row =new Object[4];
JLabel lbl=new JLabel("Add New Property");
lbl.setBounds(100,200,200,100);
lbl.setVisible(true);
invntryfrm.add(lbl);
//invntryfrm.setVisible(true);
JPanel panel=new JPanel();
panel.setBounds(20,200,680,100);
panel.setBackground(Color.WHITE);
invntrybck.add(panel);
DefaultTableModel model=new DefaultTableModel();
model.setColumnIdentifiers(columnNames);
JTable tabel=new JTable();
tabel.setBounds(100,20,700,400);
tabel.setBackground(Color.DARK_GRAY);
tabel.setForeground(Color.WHITE);
tabel.setModel(model);
tabel.setPreferredScrollableViewportSize(new Dimension(500,50));
tabel.setFillsViewportHeight(true);
JScrollPane pane=new JScrollPane(tabel);
panel.add(pane);
try{
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\MUHAMMAD SHAHAB\\real estate.accdb");
String sql="select Username,Password,Country,City from simba";
PreparedStatement pst=conn.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, ex);
}
(1).首先在你的库文件夹中添加 rs2Xml.jar ,然后在你的代码中做以下更改:
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\MUHAMMAD SHAHAB\\real estate.accdb");
String sql="select Username,Password,Country,City from simba";
PreparedStatement pst=conn.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
tabel.setModel(DbUtils.resultSetToTableModel(rs));
我希望这对你有用。
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import static java.lang.System.out;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class JavaApplication16 {
public static void main(String[] args) {
String driver="org.apache.derby.jdbc.ClientDriver";
String url="jdbc:derby://localhost:1527/simbadb";
String username="simbadb", password="simbadb";
Connection con=null;
try
{
Class.forName(driver);
con=DriverManager.getConnection(url, username, password);
String query="select * from simba";
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
int rowcount=0;
ResultSet rs=stmt.executeQuery(query);
ResultSetMetaData rsmd=rs.getMetaData();
int columncount=rsmd.getColumnCount();
while(rs.next())
{
rowcount++;
}
out.println("number of records: "+rowcount);
String[][] rowdata=new String[rowcount][columncount];
rs.beforeFirst();
int rowindex=0;
while(rs.next())
{
int columnindex=0;
for(int i=1;i<=columncount;i++)
{
rowdata[rowindex][columnindex]=rs.getString(i);
columnindex++;
}
rowindex++;
}
String[] coldata=new String[columncount];
int colindex=0;
for(int i=1;i<=columncount;i++)
{
coldata[colindex]=rsmd.getColumnName(i);
colindex++;
}
rs.close();
DefaultTableModel dtm=new DefaultTableModel(rowdata, coldata);
JFrame frame=new JFrame();
JTable table=new JTable();
table.setModel(dtm);
Container c=frame.getContentPane();
c.setLayout(new FlowLayout(FlowLayout.LEFT));
c.add(new JScrollPane(table));
frame.setSize(new Dimension(500, 500));
frame.setVisible(true);
}
catch(Exception e)
{
out.println(e);
}
finally
{
try
{
if(con!=null)
{
con.close();
out.println("closed");
}
}
catch(Exception e)
{
out.println(e);
}
}
}
}
只需添加Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
在 try Catch 块中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.