[英]Retrieving Data from JDBC Database into Jtable
嗨,我已經成功地將我的 jTable 鏈接到了 JDBC 數據庫。 但是,我無法檢索它們。 我希望在重新啟動程序時顯示保存的數據,但它不起作用。
alarm.setText("");
DefaultTableModel model =(DefaultTableModel) hwList.getModel();
if(!className.getText().trim().equals(""))
{
model.addRow(new Object[]{className.getText(), homeWork.getText(), dueDate.getText()});
}
else
{
alarm.setText("Class Name should not be blank.");
}
Connection conn;
Statement st;
try
{
String myDriver = "com.mysql.jdbc.Driver";
String myUrl = "jdbc:mysql://localhost:3306/mysql";
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Connecting to database");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "");
System.out.println("Connected to databse");
String a = className.getText();
String b = homeWork.getText();
String c = dueDate.getText();
System.out.println("Inserting into the table");
st = conn.createStatement();
String stmt="INSERT INTO hwList (className, homeWork, dueDate)"+ "VALUES ("+"\'"+a+"\',"+"\'"+b+"\',"+"\'"+c+"\')";
System.out.println(stmt);
st.executeUpdate(stmt);
System.out.println("Saved!");
}
catch (Exception e)
{
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
這是我保存文檔的代碼!
有什么辦法可以檢索JDBC數據庫中的數據並通過Jtable顯示嗎? 我很抱歉問這么簡單的問題,但我是 Java 新手,我迫切需要幫助!
非常感謝!
用於加載數據的代碼...
順便說一句,我的 jtable 是一個 3 列表,分別包含三列——className、homeWork、dueDate。 謝謝!
String sql="SELECT * FROM hwList";
ResultSet rs = st.executeQuery(sql);
while(rs.next())
{
String d = rs.getString("className");
String e = rs.getString("homeWork");
String f = rs.getString("dueDate");
}
首先創建一個新的TableModel
...
DefaultTableModel model = new DefaultTableModel(new String[]{"Class Name", "Home work", "Due Date"}, 0);
從數據庫加載數據...
String sql="SELECT * FROM hwList";
ResultSet rs = st.executeQuery(sql);
將每一行數據添加到表模型中...
while(rs.next())
{
String d = rs.getString("className");
String e = rs.getString("homeWork");
String f = rs.getString("dueDate");
model.addRow(new Object[]{d, e, f});
}
將模型應用於您的JTable
...
table.setModel(model);
您可能還想查看try-with-resources 聲明並確保您正確管理您的資源
第1步
import javax.swing.*;
import java.awt.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
public class UserList extends JFrame {
DefaultTableModel model = new DefaultTableModel();
Container cnt = this.getContentPane();
JTable jtbl = new JTable(model);
public UserList() {
cnt.setLayout(new FlowLayout(FlowLayout.LEFT));
model.addColumn("Id");
model.addColumn("Username");
model.addColumn("Password");
model.addColumn("Create");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/java_db", "root", "");
PreparedStatement pstm = con.prepareStatement("SELECT * FROM users");
ResultSet Rs = pstm.executeQuery();
while(Rs.next()){
model.addRow(new Object[]{Rs.getInt(1), Rs.getString(2),Rs.getString(3),Rs.getString(4)});
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
JScrollPane pg = new JScrollPane(jtbl);
cnt.add(pg);
this.pack();
}
}
第2步
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
JFrame frame = new UserList();
frame.setTitle("Swing Example");
frame.setSize(500, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
演示
String myDriver = "com.mysql.jdbc.Driver";
String myUrl = "jdbc:mysql://localhost:3306/mysql";
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Connecting to database");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "");
System.out.println("Connected to databse");
Statement st;
Vector data = new Vector();
try {
st = connection.createStatement();
ResultSet res = st.executeQuery("SELECT col_name FROM table_name");
ResultSetMetaData metaData = res.getMetaData();
int columns = metaData.getColumnCount();
while (res.next()) {
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++) {
row.addElement(res.getObject(i));
}
data.addElement(row);
}
} catch (SQLException e) {
e.printStackTrace();
}
Vector columnNames = new Vector();
columnNames.addElement("col_1");
columnNames.addElement("col_name_n");
table = new JTable(data,columnNames);
您可以使用類似上面的代碼從數據庫中檢索數據並將其存儲在 jtable 中。
嗨,
ResultSet
更改為ArrayList
ArrayList
數據的JTalbe
創建模型那應該工作。
首先創建表模型,然后使用該fetch_data()
函數。 確保您的數據庫連接正常工作。 在主構造函數中調用該函數。 就是這樣。
DefaultTableModel dm;
dm=(DefaultTableModel) jTable1.getModel();
public void fetch_data(){
try{
String sql= "select * from tbl_name";
ResultSet rs=st.executeQuery(sql);
YourjTableName.setModel(DbUtils.resultSetToTableModel(rs));
}catch(Exception e){
System.out.println(e);
}
}
CODE:(用於檢索)*根據您的需要更改代碼
String tquery = "SELECT * FROM Member";
DbConnection obj = new DbConnection();
ResultSet r = obj.Retrive(tquery);
while (r.next()) {
int i = r.getInt(1);
String d = r.getString(2);
String e = r.getString(3);
String f = r.getString(4);
String h = r.getString(5);
String w = r.getString(6);
DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());
model.addRow(new Object[]{i, d, e, f, h, w});
}
代碼(簡化):
String tquery = "SELECT * FROM Member";
ResultSet rs = st.executeQuery(sql);
while (r.next()) {
int i = r.getInt(1);
String d = r.getString(2);
DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());
model.addRow(new Object[]{i, d);//add row to JTable
}
如果這個DefaultTableModel model = new DefaultTableModel();
不工作使用DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());
希望對你有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.