導航:首頁 > 編程大全 > jtable更改行資料庫

jtable更改行資料庫

發布時間:2024-12-31 09:19:11

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中資料庫變了但我的JTtable表格不能夠馬上變怎麼辦啊

這個問題我也碰到過,你更新資料庫後,調用方法立即把DefaultTableModel跟資料庫數據再次吻合,然後再後面加上JTable名.repaint();方法就可以了,它會立即自動刷新表格同步。(如這樣聲明的:JTable myTable=new JTable(你的Table模型);然後更新資料庫後,更改DefaultTableModel與資料庫數據一樣,再在它之後調用語句myTable.repaint();就可以了

③ JAVA 怎麼把資料庫里的數據顯示在JTable表格里

這個要從頭說起就復雜了。我簡單說一下吧。
首先,要把數據從庫中取出來,假設你已經會了。
其次,創建一個表格模型,
DefaultTableModel model=new DefaultTableModel();
//創建表頭
model.setColumnIdentifiers(new Object[]{"日期/時間","操作工","產品型號","數量"});
再次,添加數據
while(results.next())
{
String dt=results.getString("dt");
String name=results.getString("name");
String pname=results.getString("proct");
int i=results.getInt("num");
//把以上數據添加到表格模型的一行中

model.addRow(new Object[]{dt,name,pname,i});
}
最後,用模型生成表格
JTable table=new JTable(model);
當然,還有一些其它的操作,比如把表格顯示出來,表格的字體、行高等設置等等,不再一一贅述。

④ java中JTable 通過檢索搜索出某行的其中一個數據 將該行置頂並改變顏色 連資料庫多列數據咋辦

不是很明白你的要求。具體的操作是怎樣的的呢?

假設資料庫中有個學生表:

學號 姓名 年齡

001 張三 20

002李四 21

假設按姓名搜索,輸入搜索條件「張」:

情況1、根據搜索條件直接搜索資料庫記錄(通常都是這樣搜索),那從資料庫搜索出的記錄就只有姓名包含「張」的記錄,然後JTable中也就只展示這些記錄,就無所謂置頂不置頂啦。

情況2、只是根據搜索條件在當前JTable展示的數據中搜索,代碼如下:

importjava.awt.BorderLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTable;
importjavax.swing.JTextField;
importjavax.swing.border.EmptyBorder;
importjavax.swing.event.TableModelEvent;
importjavax.swing.event.TableModelListener;

{
privateJPanelsearchPanel;
privateJTextFieldnumField;
;
privateJTextFieldnameField;
;
privateJTabletable;
;
publicJTableTest(){
super("SimpleJTableTest");
setSize(400,300);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
searchPanel=newJPanel();
searchPanel.setBorder(newEmptyBorder(3,3,3,3));
searchPanel.setLayout(newGridLayout(2,3,2,3));
searchPanel.add(newJLabel("學號"));
numField=newJTextField(20);
searchPanel.add(numField);
searchByNumButton=newJButton("按學號搜索");
searchByNumButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent){
table.getSelectionModel().clearSelection();
tableModel.doSearchByNum(numField.getText());
}
});
searchPanel.add(searchByNumButton);
searchPanel.add(newJLabel("姓名"));
nameField=newJTextField(20);
searchPanel.add(nameField);
searchByNameButton=newJButton("按姓名搜索");
searchByNameButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent){
table.getSelectionModel().clearSelection();
tableModel.doSearchByName(nameField.getText());
}
});
searchPanel.add(searchByNameButton);
getContentPane().add(searchPanel,BorderLayout.NORTH);
tableModel=newTestTableModel();
tableModel.addTableModelListener(newTableModelListener(){
@Override
publicvoidtableChanged(TableModelEvente){
if(tableModel.getHitRowCount()>0){
table.setRowSelectionInterval(0,tableModel.getHitRowCount()-1);
}
}
});
table=newJTable(tableModel);
JScrollPanejsp=newJScrollPane(table);
getContentPane().add(jsp,BorderLayout.CENTER);
}
publicstaticvoidmain(String[]args){
JTableTestself=newJTableTest();
self.setVisible(true);
}
}
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.List;
importjavax.swing.table.AbstractTableModel;
{
privateList<Student>data=Arrays.asList(newStudent("001","王二",20),newStudent("002",
"王二小",19),newStudent("003","張三",20),newStudent("004","張三豐",21),newStudent("005",
"李四",21),newStudent("006","李四光",19));
privateList<Integer>searchHitRows=newArrayList<Integer>();
@Override
publicintgetRowCount(){
returndata.size();
}
@Override
publicintgetColumnCount(){
return3;
}
@Override
publicStringgetColumnName(intcolumn){
if(column==0)
return"學號";
elseif(column==1)
return"姓名";
return"年齡";
}
@Override
publicObjectgetValueAt(introwIndex,intcolumnIndex){
Studentstudent=data.get(rowIndex);
if(columnIndex==0)
returnstudent.getNum();
elseif(columnIndex==1)
returnstudent.getName();
returnstudent.getAge();
}
/**按姓名搜索*/
publicvoiddoSearchByName(Stringkey){
searchHitRows.clear();
if(key==null||"".equals(key))
return;
for(inti=0;i<data.size();i++){
StudentstudentI=data.get(i);
Stringvalue=studentI.getName();
if(value.indexOf(key)<0)
continue;
intj=0;
for(j=i-1;j>=0;j--){
StudentstudentJ=data.get(j);
StringvalueJ=studentJ.getName();
if(valueJ.indexOf(key)>=0)
break;
}
Studenttemp=data.get(j+1);
data.set(j+1,studentI);
data.set(i,temp);
searchHitRows.add(Integer.valueOf(j+1));
}
fireTableDataChanged();
}
/**按學號搜索*/
publicvoiddoSearchByNum(Stringkey){
searchHitRows.clear();
if(key==null||"".equals(key))
return;
for(inti=0;i<data.size();i++){
StudentstudentI=data.get(i);
Stringvalue=studentI.getNum();
if(value.indexOf(key)<0)
continue;
intj=0;
for(j=i-1;j>=0;j--){
StudentstudentJ=data.get(j);
StringvalueJ=studentJ.getNum();
if(valueJ.indexOf(key)>=0)
break;
}
Studenttemp=data.get(j+1);
data.set(j+1,studentI);
data.set(i,temp);
searchHitRows.add(Integer.valueOf(j+1));
}
fireTableDataChanged();
}
publicvoidsetData(List<Student>data){
if(data==null)
("參數data不能為null。");
this.data=data;
fireTableDataChanged();
}
publicintgetHitRowCount(){
returnsearchHitRows.size();
}
}

從資料庫查詢出記錄後,轉成Student對象列表調用TestTableModel的setData設置表格的數據。

⑤ java中怎麼刪除或者修改JTable指定的一行內容

jtable修改內容可以通過defaulttablemodel來修改的,以下是defaulttablemodel的簡單用法

intcol=jTable1.getSelectedColumn();//獲取選中的列號
introw=jTable1.getSelectedRow();//獲取選中的行號
DefaultTableModelmodel=(DefaultTableModel)jTable1.getModel();//獲取defaulttablemodel
Objectval=model.getValueAt(row,col);//根據行號和列號,獲取某個單元格的值
//其他
model.removeRow(index);//刪除某行
model.setValueAt(value,row,col);//修改某單元格的值

更多defaulttablemodel用法,可以去查API文檔

⑥ 如何更改Swing-JTable單元格中的內容後,存入資料庫

就是用getValueAt(intr,intc)啊!用戶一旦修改了表的數據,你在監聽器里,得到那個table的對象,就可以之間用這個getValueAt方法的如果還是修改之前的,可能有幾個可能:1.那條數據並沒有真正的修改到了table中,這種情況也是最常見的錯誤解決方法:修改數據不能用簡單的setValueAt()方法,而是應該對tablemodel裡面的數據做修改,然後setModel(Model),這樣傳回去的table才是真正已經修改過數據的table,否則就不是,這也是大家都用的方法2.自己的監聽器寫錯了,可能在監聽器里部分代碼有問題其他,應該沒有問題了,你看下吧,估計是你的table數據沒有真正的插入到table中,不是真正的修改數據,也就是說,你沒有用到setModel()方法,而是直接在界面上點擊修改數據,沒有用到監聽器去setModel()

⑦ 在JTable中修改單元格並返回資料庫

JTable的單元格可以修改,而且可以監聽單元格修改事件,實現TableModelListener的public void tableChanged(TableModelEvent e)方法,監聽到單元格修改後,在響應函數中把修改後的值傳入資料庫就ok了

閱讀全文

與jtable更改行資料庫相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接