Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过JafaFx表格单元格编辑动态更改SQL数据库的方法_Java_Sql_Javafx - Fatal编程技术网

Java 通过JafaFx表格单元格编辑动态更改SQL数据库的方法

Java 通过JafaFx表格单元格编辑动态更改SQL数据库的方法,java,sql,javafx,Java,Sql,Javafx,我的javaFx应用程序有许多带有可编辑表格单元格的表格,用于从sql数据库填充数据。我还希望在通过表格单元格编辑数据后对数据库进行更改。根据此toturial“” 我已经用下面的代码创建了我的可编辑表格单元格 item_price_col.setCellValueFactory( new PropertyValueFactory("price") ); item_price_col.setCellFactory(TextFieldTableCell.forTableColumn()

我的javaFx应用程序有许多带有可编辑表格单元格的表格,用于从sql数据库填充数据。我还希望在通过表格单元格编辑数据后对数据库进行更改。根据此toturial“” 我已经用下面的代码创建了我的可编辑表格单元格

item_price_col.setCellValueFactory(
    new PropertyValueFactory("price")
); 

item_price_col.setCellFactory(TextFieldTableCell.forTableColumn());
item_price_col.setOnEditCommit(
    new EventHandler<CellEditEvent<Item, String>>() {
        @Override
        public void handle(CellEditEvent<Item,String> t) {

            String old_price=t.getOldValue();

            ((Item) t.getTableView().getItems().get(
                t.getTablePosition().getRow())
                ).setPrice(t.getNewValue());
            String new_price=t.getNewValue();

            System.out.println("Old Price:"+old_price);
            System.out.println("New Price:"+new_price);
        }
    }
);

在数据库中为项目保留一个
id
字段。 如果数据库中没有主键或唯一键,则可能犯了一些体系结构错误。无论如何,在某些数据库服务器中指定了行id

private int id;  // id field for item object.
更新时,将id包含为条件

updatesometable set price=item.getPrice(),其中id=item.getId();
我知道sql编写得不好,但我希望您能理解它

而且您不必在表格网格中显示id字段的值

大多数系统都使用这种技术

2015年12月18日编辑

表中有“代码”列。由jdbc检索到项目对象的id字段中

有一个例子


您的
类是否具有唯一的id字段(即表示数据库主键的字段)?顺便说一句:用于通过单个方法调用获取
。感谢您的关注。您能否提供有关如何获取唯一列(id)值的更多详细信息或在线教程使用CellEditEvent.getRowValue()编辑的行。感谢您的关注。我的项目表已经有主键。但问题是我不知道如何获取所选行的主键。在该toturial“”中,它展示了如何只获取编辑列的旧值和新值。您应该使用jdbc连接并学习其文档。如果你想在google上搜索它,我建议你这样搜索:“jdbc java2s”或“jdbc TutorialPoint”,谢谢你的关注。我现在正在使用jdbc连接,我的javaFx表使用jdbc保存sql数据库中的数据。我已经为我的项目创建了insert和delete QUARE。但是在这种情况下,我不知道如何获取所选行的主键。我需要编写类似“更新项目集价格=新价格\值,其中id=X”这样的查询.X是一个变量,它具有我编辑行的唯一pirmary键值。请通过添加数据库表结构编辑问题,然后将有一个一次性答案项目|创建表
item
code
int(11)非空,
name
varchar(50)默认为空,
price
varchar(50)不为空,
whole\u sale\u price
varchar(50)不为空,
original\u price
varchar(50)默认为空,主键(
code
),唯一键
code
code
)引擎=InnoDB默认字符集=latin1|
private int id;  // id field for item object.