[英]Retrieving Data from JDBC Database into Jtable
Hi I have successfully linked my jTable to JDBC database.嗨,我已经成功地将我的 jTable 链接到了 JDBC 数据库。 However, I am having trouble retrieving them.
但是,我无法检索它们。 I want the saved data to appear when I restart the program but it is not working.
我希望在重新启动程序时显示保存的数据,但它不起作用。
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());
}
This is my code for saving the document!这是我保存文档的代码!
Is there any way to retrieve data in JDBC data base and show it through Jtable?有什么办法可以检索JDBC数据库中的数据并通过Jtable显示吗? I'm so sorry for asking such a simple question but I am new to java and I desperately need help!
我很抱歉问这么简单的问题,但我是 Java 新手,我迫切需要帮助!
Thank you so much!非常感谢!
Code used to load the data...用于加载数据的代码...
Btw, my jtable is a 3 column table with three columns--className, homeWork, dueDate respectively.顺便说一句,我的 jtable 是一个 3 列表,分别包含三列——className、homeWork、dueDate。 Thank you!
谢谢!
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");
}
Start by creating a new TableModel
...首先创建一个新的
TableModel
...
DefaultTableModel model = new DefaultTableModel(new String[]{"Class Name", "Home work", "Due Date"}, 0);
Load the data from the database...从数据库加载数据...
String sql="SELECT * FROM hwList";
ResultSet rs = st.executeQuery(sql);
Add each row of data to the table model...将每一行数据添加到表模型中...
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});
}
Apply the model to your JTable
...将模型应用于您的
JTable
...
table.setModel(model);
You may also want to look at The try-with-resources Statement and make sure you're managing your resources properly您可能还想查看try-with-resources 声明并确保您正确管理您的资源
Step:1
第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();
}
}
Step:2
第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);
}
}
Demo
演示
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);
You can use something like the code above to retrieve data from database and store it in jtable.您可以使用类似上面的代码从数据库中检索数据并将其存储在 jtable 中。
Hie,嗨,
ResultSet
to an ArrayList
ResultSet
更改为ArrayList
JTalbe
that uses data from the ArrayList
ArrayList
数据的JTalbe
创建模型That should work.那应该工作。
First create the table model then use that fetch_data()
function.首先创建表模型,然后使用该
fetch_data()
函数。 Make sure your database connection is working.确保您的数据库连接正常工作。 Call the function in main constructor.
在主构造函数中调用该函数。 That's it.
就是这样。
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: (for retrieve) *change code according to your need 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});
}
CODE (simplified):代码(简化):
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
}
if this DefaultTableModel model = new DefaultTableModel();
如果这个
DefaultTableModel model = new DefaultTableModel();
not work use DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());
不工作使用
DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());
Hope it helps you!希望对你有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.