導航:首頁 > 編程大全 > jtable添加多行資料庫

jtable添加多行資料庫

發布時間:2025-09-29 01:58:00

⑴ 誰能給個java的小例子,實現swing調用sql的表,並能進行增刪改查操作。

LZ要得是代碼,就給樓主代碼嘛,對於剛學java的人來說肯定對API看得不是很明白,要有比較明確的例子才可以更好的去理解每一個方法,對於樓主的問題,我想說的,首先你要有一個很明確的思路,首先你要寫一個DefaultTableModel,這個model是決定你如何顯示這些信息的,比如說,第一行顯示姓名,然後顯示性別。等等。然後從資料庫里獲得數據,然後傳入到這個model中。
其次在你的swing中定義一個table,然後實例化你定義的這個model,然後用table.setMode(DefaultTableModel),把你實例化的那個model傳入到table中,這樣就會在tabale中顯示了你要的結果,至於你說要與資料庫連接操縱,這里你就需要加入相關的滑鼠listener了,在這個例子中,我給你加入了刪除和修改兩個操作,就是當對這表格點擊滑鼠的時候,會出現相應的選擇。這你需要用到JPopupMenu, 和JPopupMenu的元素JMenuItem了

首先給你tablemodel的類:
//這個類定義了你如何在表格中顯示數據和如何獲得表格中的數據,需要把二維數組傳入這個類,所以在構造函數中傳入了二維數組
public class FriendTableModel extends DefaultTableModel {
private String[] columns = {"學號","姓名","性別","年齡","郵箱"};
private Object a[][];
public FriendTableModel(Object [][] a) {
this.a=a;
}

public Object getUserAt(int rowIndex)
{
Object[] u = a[rowIndex];
return u;
}
public void removeRow(int row) {
a[row]=null;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Object[] u = a[rowIndex];
switch(columnIndex) {
case 0:
return u[0];
case 1:
return u[1];
case 2:
return u[2];
case 3:
return u[3];
case 4:
return u[4];
default:
return "";
}
}

@Override
public int getColumnCount() {
return columns.length;
}

@Override
public int getRowCount() {
if (a==null) return 0;
return a.length;
}

@Override
public boolean isCellEditable(int r, int c) {
return false;
}

@Override
public String getColumnName(int columnIndex) {
return columns[columnIndex];
}
}

然後給你主類,這個類中包含了與數據連接,把數據轉換二維數組,定義各個操作的listener,等
public class DataFrame extends JFrame implements ActionListener
{
public static void main(String args[])
{
new DataFrame();
}
Connection con;
Statement stmt;
ResultSet rs;
Object a[][]; //這里的a[][]就是一個i行j列的表,用來顯示資料庫中數據用的
Object b[]; //從tablemode返回的一行數據, 當你修改數時,向資料庫更新的時候,數據從這個對象中獲得;
int row;//你修改或者要刪除的行
int i=0; //輸據的條數
JTable jTable = null;//用來顯示表格
JPopupMenu jPopupMenu;//用來顯示你對表格的操作
private JMenuItem delete; //刪除操作
private JMenuItem upload;//修改操作
Object header[]={"學號","姓名","性別","年齡","郵箱"};//e是一個j列的表頭,用來存儲欄位名稱的,比如說上面的"學號","姓名"等字元串
DataFrame()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{
System.out.println("Error:"+e);
}
try{
con=DriverManager.getConnection("jdbc:odbc:mySql","sa","123");
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery("select * from student");
while(rs.next())//把資料庫數據寫入二維數組
{
a[i][0]=rs.getInt(1);
a[i][1]=rs.getString(2);
a[i][2]=rs.getString(3);
a[i][3]=rs.getInt(4);
a[i][4]=rs.getString(5);
i++;
}
}
catch(SQLException e)
{
System.out.println("SqlError:"+e);
}
jTable = new JTable();
jTable.addMouseListener(new inMouseEven()); //給滑鼠定義事件,就是你點擊滑鼠的時候,會發生的事情
jTable.setShowGrid(false);
jPopupMenu = new JPopupMenu();
delete = new JMenuItem();
delete.setText("刪除");
delete.addMouseListener(new Delete_mouseAdapter());//給點擊刪除時增加事件
upload = new JMenuItem();
upload.setText("修改");
upload.addMouseListener(new Uoload_mouseAdapter());//給點擊更新時增加事件
jPopupMenu.add(delete);
jPopupMenu.add(upload);
FriendTableModel ftm = new FriendTableModel(a); //實例化tablemodel,把二維數組傳進去
if (ftm.getRowCount() > 0) {
jTable.setModel(ftm);//把Tablemodel傳入table中
}
Container con=getContentPane();
getContentPane().add(new JScrollPane(jTable),BorderLayout.CENTER);
setSize(400,300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
validate();
}

public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
//當你點擊表格中的一行,出現選項,讓你選擇具體操作,此處是點擊滑鼠事件的具體代碼
private class inMouseEven extends MouseAdapter {

@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() < 1) {
return;
}
row = jTable.getSelectedRow(); //返回你點擊的行數
if (row >= 0) {
FriendTableModel ftm =(FriendTableModel) jTable.getModel();
b= ftm.getUserAt(row ); //返回此行的數據
jPopupMenu.show(DataFrame.this, e.getX() + 160, e.getY() + 75);//出現操作選項
}

}
}

//刪除操作的listenr,對應的code
private class Delete_mouseAdapter extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
try {
String sql = "delete from **where id = " + b[0]; //此處b[]是上面當你點擊滑鼠是返回的那一行數據,b[]中對應的是表格中一行數據。
stmt.executeQuery(sql);
FriendTableModel ftm =(FriendTableModel) jTable.getModel();
ftm.removeRows(0, row );
jTable.updateUI();
} catch (SQLException ex) {
Logger.getLogger(DataFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

//更新操作對應的code
private class Uoload_mouseAdapter extends MouseAdapter {

@Override
public void mousePressed(MouseEvent e) {
String sql ="UPDATE Student SET Address = %s, City = %s WHERE id = %s" %b[1],b[2],b[0]...//這里sql自己寫,就是更新所有的數據,新數據從b[...]中獲得
stmt.executeQuery(sql);
}
}
}

其中一些sql語句沒有給你寫出,這個你照著你的資料庫寫,還有資料庫的鏈接你需要改一下,上面的代碼沒有經過測試,因為我沒有鏈接資料庫,但是整體思路就應該是這樣,對應你的具體要求,修改代碼,我想應該可以運行起來的,你需要去理解這些代碼,然後寫出sql語句,給出正確的資料庫配置,修改其中可能的錯誤。
所有代碼都是親手寫的,希望對剛接觸java的你有用。
如果你從中得到幫助,記得肯定我的勞動,給我分哦。

⑵ java中jatable連接資料庫步驟及其獲取數據方法

以下是一個小程序,參考下
import javax.swing.*;
import javax.swing.table.JTableHeader;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class Test extends JFrame{
// 定義組件
private JScrollPane scpDemo;
private JTableHeader jth;
private JTable tabDemo;
private JButton btnShow;
// 構造方法
public Test(){
// 窗體的相關屬性的定義
super("JTable數據綁定示例");
this.setSize(330,400);
this.setLayout(null);
this.setLocation(100,50);
// 創建組件
this.scpDemo = new JScrollPane();
this.scpDemo.setBounds(10,50,300,270);
this.btnShow = new JButton("顯示數據");
this.btnShow.setBounds(10,10,300,30);
// 給按鈕注冊監聽
this.btnShow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
btnShow_ActionPerformed(ae);
}
});
// 將組件加入到窗體中
add(this.scpDemo);
add(this.btnShow);
// 顯示窗體
this.setVisible(true);
}
// 點擊按鈕時的事件處理
public void btnShow_ActionPerformed(ActionEvent ae){
// 以下是連接數據源和顯示數據的具體處理方法,請注意下
try{
// 獲得連接
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:localServer","sa","");
// 建立查詢條件
String sql = "select * from localServer";
PreparedStatement pstm = conn.prepareStatement(sql);
// 執行查詢
ResultSet rs = pstm.executeQuery();
// 計算有多少條記錄
int count = 0;
while(rs.next()){
count++;
}
rs = pstm.executeQuery();
// 將查詢獲得的記錄數據,轉換成適合生成JTable的數據形式
Object[][] info = new Object[count][4];
count = 0;
while(rs.next()){
info[count][0] = Integer.valueOf( rs.getInt("id"));
info[count][1] = rs.getString("name");
info[count][2] = Integer.valueOf( rs.getInt("age") );
info[count][3] = rs.getString("sex");
count++;
}
// 定義表頭
String[] title = {"學號","姓名","年齡","性別"};
// 創建JTable
this.tabDemo = new JTable(info,title);
// 顯示表頭
this.jth = this.tabDemo.getTableHeader();
// 將JTable加入到帶滾動條的面板中
this.scpDemo.getViewport().add(tabDemo);
}catch(ClassNotFoundException cnfe){
JOptionPane.showMessageDialog(null,"數據源錯誤","錯誤",JOptionPane.ERROR_MESSAGE);
}catch(SQLException sqle){
JOptionPane.showMessageDialog(null,"數據操作錯誤","錯誤",JOptionPane.ERROR_MESSAGE);
}
}

public static void main(String[] args){
new Test();
}
}

⑶ 誰能詳細介紹一下java swing里的JTable JTree是怎樣用的以及他們的方法!

Swing是由100%純Java實現的,Swing組件是用Java實現的輕量級( light-weight)組件,沒有本地代碼,不依賴操作系統的支持,這是它與AWT組件的最大區別。由於AWT組件通過與具體平台相關的對等類(Peer)實現,因此Swing比AWT組件具有更強的實用性。Swing在不同的平台上表現一致,並且有能力提供本地窗口系統不支持的其它特性。

Swing採用了一種MVC的設計範式,即"模型-視圖-控制"(Model-View-Controller),其中模型用來保存內容,視圖用來顯示內容,控制器用來控制用戶輸入。

在AWT組件中,由於控制組件外觀的對等類與具體平台相關,使得AWT組件總是只有與本機相關的外觀。Swing使得程序在一個平台上運行時能夠有不同的外觀。用戶可以選擇自己習慣的外觀。

7.1.2 Swing的類層次結構

在javax.swing包中,定義了兩種類型的組件:頂層容器(JFrame,JApplet,JDialog和JWindow)和輕量級組件。Swing組件都是AWT的Container類的直接子類和間接子類。

java.awt.Component
-java.awt.Container
-java.awt.Window
-java.awt.Frame-javax.swing.JFrame
-javax.Dialog-javax.swing.JDialog
-javax.swing.JWindow
-java.awt.Applet-javax.swing.JApplet
-javax.swing.Box
-javax.swing.Jcomponet

swing包是Swing提供的最大包,它包含將近100個類和25個介面,幾乎所有的Swing組件都在swing包中,只有JtableHeader和 JtextComponent是例外,它們分別在swing.table和swing.text中。
swing.border包中定義了事件和事件監聽器類,與AWT的event包類似。它們都包括事件類和監聽器介面。
swing.pending包包含了沒有完全實現的Swing組件。
swing.table包中主要包括了表格組建(JTable)的支持類。
swing.tree同樣是JTree的支持類。
swing.text、swing.text.html、swing.text.html.parser和swing.text.rtf都是用於顯示和編輯文檔的包。

閱讀全文

與jtable添加多行資料庫相關的資料

熱點內容
寶元數控m98循環怎麼編程 瀏覽:710
蘋果101解鎖界面 瀏覽:802
給程序加註冊碼 瀏覽:831
rbz文件怎麼安裝 瀏覽:491
想學網路編程怎麼入手 瀏覽:693
深孔鑽編程和加工中心編程哪個好 瀏覽:841
asp打開word 瀏覽:165
怎麼把txt文件傳到iphone 瀏覽:666
沒有path怎麼編程java 瀏覽:353
javaweb表單重復提交 瀏覽:206
蘋果手機如何轉數據到安卓手機上 瀏覽:687
蘋果怎麼刪除上傳視頻文件 瀏覽:782
jtable添加多行資料庫 瀏覽:475
ipad加密文件夾 瀏覽:583
snow有幾個版本 瀏覽:894
正規文件的格式 瀏覽:329
華為手機有些文件怎麼找不到了 瀏覽:589
吳江區數控編程如何學 瀏覽:22
excel2013取消保護密碼設置 瀏覽:585
隱私的健康數據刪除後怎麼添加 瀏覽:127

友情鏈接