public void table() {
if(SOMR.tableCall() == true) {
this.columnNames = SOMR.getCol();
this.data = SOMR.getData();
JTable table = new JTable(data, columnNames)
{
public Class getColumnClass(int column)
{
for (int row = 0; row < getRowCount(); row++)
{
Object o = getValueAt(row, column);
if (o != null)
{
return o.getClass();
}
}
return Object.class;
}
};
JScrollPane scrollPane = new JScrollPane( table );
add( scrollPane, BorderLayout.CENTER );
}
}
public boolean table() {
Connection connection = null;
ResultSet resultSet = null;
PreparedStatement preparedStatement = null;
try
{
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:db");
preparedStatement = connection.prepareStatement("SELECT item1, item2, item3 FROM menu WHERE can = ? AND id = ?");
preparedStatement.setInt(1, can);
preparedStatement.setInt(2, id);
resultSet = preparedStatement.executeQuery();
ResultSetMetaData md = resultSet.getMetaData();
columns = 3;//md.getColumnCount();
for(int i = 1; i<=columns; i++) {
columnNames.addElement(md.getColumnName(i));
}
while(resultSet.next()) {
row = new Vector(columns);
for (int i = 1; i<=columns; i++) {
row.addElement(resultSet.getObject(i));
}
data.addElement(row);
}
tablecall = true;
return tablecall;
}
catch (Exception ex)
{
tablecall = false;
ex.printStackTrace();
}
finally
{
try
{
resultSet.close();
preparedStatement.close();
connection.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return tablecall;
}
我遵循了从表从数据库显示JTable的方法,但我不知道如何从JTable中插入、更新和删除一行,并在数据库中更新,然后刷新JTable以从新更新的数据库中显示。
我想添加一个“添加项”按钮,然后它会弹出一个框架/窗口,其中有字段要输入,然后在弹出的框架中单击“添加”后,JTable和数据库将同时更新。
有人能帮我做这件事吗?我迷路了..非常感谢!
我仍然不清楚你的要求,但让我们开始尽可能多地回答:
每个JTable
对象都使用一个表模型对象来管理实际的表数据。表模型对象必须实现TableModel
接口。但是,DefaultTableModel
本身就足以处理表数据交互。查看它的java文档以获得更多细节。
但是,要检测表model
对象管理的数据的更改,需要使用addtablemodellistener()
函数将与JTable
实例关联的model
实例注册到tablemodellistener
接口的实现。侦听器将收到TableModelEvent E
事件通知,以检查数据行中的更改和更改类型,使用:
model.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
int rowFirstIndex = e.getFirstRow();
int rowLastIndex = e.getLastRow();
DefaultTableModel model = (DefaultTableModel) e.getSource();
if(e.getType()==TableModelEvent.UPDATE)
{
int updatedColIndex = e.getColumn();
String updateColmn = table.getColumnName(updatedColIndex);
String updatedValue = (String) model.getValueAt(rowFirstIndex, updatedColIndex);
System.out.println("column: "+updateColmn+" value: "+updatedValue);
updateDB(updateColmn, updatedValue);
}
else if(e.getType()==TableModelEvent.INSERT)
{
for(int i= rowFirstIndex; i <= rowLastIndex ; i++)
{
Vector rowData = (Vector) model.getDataVector().get(i);
Map<String, String>dataMap = new HashMap<>();
for(int j=0; j < rowData.size() ; j++)
dataMap.put(table.getColumnName(j), (String) rowData.get(j));
InsertToDB(dataMap); // now it contains columndName corresponding to row value
}
}
}
});
这是提供用户输入的主活动 } 这是Add_prople类 公共类Add_people扩展AppCompatActivity实现视图。OnClickListener{private EditText name EditText;private EditText ageEditText;private EditText heightEditText;private EditText weightede
我制作了一个JTable,其中填充了数据库中的数据。它从textfields中获取数据并将其添加到表和数据库中。问题是我有一个删除按钮,我让它从表本身删除选定的行(使用defaultTableModel),但它不会从实际的数据库中删除该数据。当我再次运行该程序时,删除的行再次出现在JTable中。 这可能会变得混乱,但希望有人能找出我错过了什么。帮助将会很感激,但不要,我的时间很少,不能完全大修我
我有2列的jtable,然后我想把它的值插入数据库; 我知道这可以用像.. 问题是..getRowCount不知道该行是否为空,那么在数据库中,该空值仍将被插入(它将在数据库中生成我的自动增量值) 我的问题是如何从jtable中插入数据库,但是空行不会插入? 如果我要求太多,请给我一个处理空行的线索, 原谅我的英语 下面是向数据库中添加数据的坏方法
我有一个由Access DB使用ResultSet&填充的JTable。我有一个方法可以正确地从数据库中删除记录,但在刷新表模型的当前视图时遇到了困难。我看过类似的帖子,并尝试使用和,但没有成功。我还注意到其他帖子提到了的使用,因为它有add/remove行方法,但我使用的代码来自我去年使用的Java教科书(教授从未达到这一点,所以我试图自己学习)... 以下是定制JFrame的类: 下面是Abs
问题内容: 我正在使用回收者视图和SQLite数据库创建一个应用程序。当用户输入一些数据时,它会显示在“回收者”视图中,并且还会添加到我的数据库中。现在,我想在回收者视图中实现功能。 我想要的是: 我想同时从数据库和回收者视图中删除所需的行,而不会得到任何意外结果。并且所有行均应删除。 我尝试过的 我实现了对回收视图(我使用cardView作为回收鉴于行)。现在,当使用它的长按时,我将获得适配器位
问题内容: 我想一次从JTable删除几行,但一次只能删除一行。JTable一次只能允许一个选择吗?如果我想通过选择删除多行,java是否允许我们这样做?给定的代码一次只能删除一行,即使我选择了多行也是如此。 是连接到MySql数据库的类。 是变量的名称 是通过使用Getter Setter类从MySql导入数据来更新我的行和列的函数 这是我尝试过的代码: 问题答案: 下面显示了如何从JTable