我已经在Mysql数据库中创建了学生表,如以下字段Stuid, studname, mark1,mark2。并使用JFrame(source,design)创建一个表,之后我在源端编写了以下代码,然后从Swing控件中拖动表。
public void DbConnection(){
try
{
Class.forName("com.mysql.jdbc.Driver");//Connection establishment to the database
String username = "root";
String password = "root";
String Database = "jdbc:mysql://localhost:3306/project";
Conn = DriverManager.getConnection( Database, username, password );
System.out.println("*** Connect to the database ***");
String Query = "Select * from StudentMaster";
Statement smnt = Conn.createStatement();
ResultSet results = smnt.executeQuery( Query );
ResultSetMetaData metaDt = results.getMetaData();
System.out.println(metaDt);
int cols = metaDt.getColumnCount();
for(int i=1;i<cols;i++){
columnNames.addElement (metaDt.getColumnName(i));
}
while(results.next()){
Vector row= new Vector(cols);
for(int i=1;i<=cols;i++){
row.addElement(results.getObject(i));
}
data.addElement(row);
}
results.close();
smnt.close();
Conn.close(); //Close Connection to the database
}
catch(Exception e)
{
System.out.println(e);
}
}
它正在连接Mysql数据库,但它没有显示Jframe表中的DBtable值。我如何获得表中的值(Jframe表控件),而无需创建表的代码。如果我双击表格,我不知道我在哪里写了表格代码。
如果你正在使用NetBeans,这很容易
步骤1
- 右键单击项目窗口中的javaApplication
- 选择新建>其他>持久性->(右侧)数据库中的实体类[选择]
- 点击下一步
- 现在从组合框中选择数据库连接,并将您想与
jTable
绑定的数据库表从"可用表"列表框添加到"已选表"列表框
这里你做了一个类,你可以绑定到你的jTable
- 右键单击jTable<
- 选择绑定/gh>
- 点击元素[它将打开'Bind jTable。元素的窗口) 点击"从表单导入数据"按钮从给定的组合框中选择数据库和表,然后单击OK
- 现在你可以看到两个列表框命名为'Available'和'Selected'在Selected list Box中,你可以看到你的数据库表列出的所有属性。
- 如果你想从这里删除任何属性,只需选择它并点击'<<'按钮
- 使用'up'和'down'按钮重新排列属性
- 点击OK,现在你可以看到你的
jTable
绑定与数据库 完成
通过创建一个可重用的TableModel
来显示任何ResultSet
的内容,这是实现作业的一种简单方法:
public class MyModel extends AbstractTableModel {
String[] headers = {};
ArrayList<String[]> rows;
public MyModel() {
rows = new ArrayList<String[]>();
}
public int getColumnCount() {
return headers.length;
}
public Object getValueAt(int row, int col) {
if (row < 0 || row >= rows.size()) return "N/A";
if (col < 0 || col >= headers.length) return "N/A";
return rows.get(row)[col];
}
public int getRowCount() {
return rows.size();
}
public String getColumnName(int col){
if (col < 0 || col >= headers.length) return "N/A";
return headers[col];
}
public void fill(ResultSet rs) {
//Setting Headers
ResultSetMetaData md = rs.getMetaData();
int cols = md.getColumnCount();
headers = new String[cols];
for(int i = 1; i < cols; i++) {
headers[i - 1] = md.getColumnName(i);
}
// Setting rows
rows.clear();
while(rs.next()) {
String[] row = new String[cols];
for(int i = 1; i < cols; i++) {
row[i - 1] = rs.getString(i);
}
rows.add(row);
}
this.fireTableDataChanged();
}
}
希望有帮助,祝你好运!
我可以告诉按钮和窗口是打开的。
{
try
{
Class.forName("java.sql.DriverManager");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root","tiger");
sql="select * from (table name)";
Statement st=con.createStatement();
ResultSet rs=st.executeQuery(sql);
jdis.getModel();
}
catch(Exception e)
{JOptionPane.showMessageDialog(null,e.getMessage());}
}
}