将 JDBC 数据库中的数据检索到 Jtable 中
Posted
技术标签:
【中文标题】将 JDBC 数据库中的数据检索到 Jtable 中【英文标题】:Retrieving Data from JDBC Database into Jtable 【发布时间】:2015-03-05 02:35:48 【问题描述】:您好,我已成功将我的 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");
【问题讨论】:
你在哪里select
语句,你在哪里加载新数据?
对不起。我是该网站的新手,我只是找不到我的原始帖子。你是什么意思创建一个实例变量?谢谢!
我的意思是“您需要接受这个并更新您的原始问题,但基本上,您需要创建 TableModel 的实例并将每一行数据放入模型中......”这意味着什么?创建 TableModel 的实例?
DefaultTableModel model = new DefaultTabelModel();
创建DefaultTableModel
类的新实例
【参考方案1】:
首先创建一个新的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);
您可能还想查看The try-with-resources Statement 并确保您正确管理您的资源
【讨论】:
【参考方案2】:步骤: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);
演示
【讨论】:
别忘了添加 JDBC 驱动程序【参考方案3】: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 中。
【讨论】:
table = new JTable(data,columnNames);
不是必需的,除非您以前从未构建过表。只需创建新模型并应用于 JTable
的现有实例...【参考方案4】:
喂,
-
将您的
ResultSet
更改为ArrayList
为您的JTalbe
创建一个模型,该模型使用来自ArrayList
的数据
应该可以的。
【讨论】:
如何从数据库中加载数据? "有什么办法可以把JDBC数据库中的数据取出来并通过Jtable展示出来吗?"...【参考方案5】:首先创建表模型,然后使用 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);
【讨论】:
【参考方案6】:问题说明:从数据库中检索数据并在java中显示在JTable上。
代码:(用于检索) *根据您的需要更改代码
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());
希望对你有帮助!
【讨论】:
以上是关于将 JDBC 数据库中的数据检索到 Jtable 中的主要内容,如果未能解决你的问题,请参考以下文章
关于使按钮在 Netbeans 的 GUI 编辑器中工作的 JDBC 到 JTable 输出查询
使用复杂的 TableCellRenderer 在 JTable 中格式化来自 JDBC 的数据