java选中table中的某一个值右键事件弹出修改窗口,修改后数据库和表格中数据为什么没有变。

题目描述

在一个table中选中要修改的数据,点击右键弹出修改对话框,修改成功后数据库和表格中数据都没有改变

相关代码

public void mouseClicked(MouseEvent mouseEvent) {

if (mouseEvent.getButton() == MouseEvent.BUTTON3){

//得到选中的行列的索引值

int r= table1.getSelectedRow();

int c= table1.getSelectedColumn();

//得到选中的单元格的值,表格中都是字符串

Object value= table1.getValueAt(r, c);

String info="确认要修改"+r+"行"+c+"列的数据 : "+value.toString()+" 吗?";

int k = JOptionPane.showConfirmDialog(null, info, "修改", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);

//获取数据库中的列名

String[] colnames = goodService.getcolumn();

String colname = null;

for (int i = 0; i < colnames.length; i ++){

if (c == i){

//判断table中某一列与数据库中表的某一列是否相同

colname = colnames[i];

}

}

if (k == JOptionPane.YES_OPTION){

Object strin = JOptionPane.showInputDialog(null, "请输入要修改的数据:");

//获取选中行的id

String id = table1.getValueAt(r, 0).toString();

System.out.println(strin + id);

System.out.println(colname);

String sql = "update Goods set ?=? where id=?";

DBUtil db = new DBUtil();

try {

db.getConnection();

int count = db.executeUpdate(sql, new Object[]{colname, strin, id});

if (count > 0){

JOptionPane.showMessageDialog(null, "修改成功", "成功", JOptionPane.PLAIN_MESSAGE);

String sqlsel = "select id as 商品编号, name as 商品名称, input as 商品进价, output as 商品售价, number as 商品数量 from Goods";

//重新读取数据库中的数据

readGoodsResult(sqlsel, null);

}else {

JOptionPane.showMessageDialog(null, "修改失败", "失败", 0);

}

}catch (Exception e){

JOptionPane.showMessageDialog(null, "系统错误", "失败", 0);

e.printStackTrace();

db.closeAll();

}

}

}

}

//执行数据库修改

public int executeUpdate(String preparedSql, Object[] param) {

int num = 0;

try {

pstmt = conn.prepareStatement(preparedSql);

if (param != null) {

for (int i = 0; i < param.length; i++) {

// 为预编译sql设置参数

pstmt.setObject(i + 1, param[i]);

}

}else {

throw new RuntimeException("Object[] param的数组长度,不应该为空");

}

//执行SQL语句

num = pstmt.executeUpdate();

} catch (SQLException e) {

throw new RuntimeException("更新数据库中的记录失败" + e);

}

return num;

}

//获取数据表列名

public String[] getcolumn() {

String[] colname = null;

DBUtil db = new DBUtil();

try {

db.getConnection();

ResultSet rs = db.executeQuery("SELECT * FROM Goods", null);

ResultSetMetaData rsmd = rs.getMetaData();

int count = rsmd.getColumnCount();

String[] col = new String[count];

for (int i = 0; i < count; i++) {

col[i] = rsmd.getColumnName(i + 1);

}

colname = col;

} catch (Exception e) {

e.printStackTrace();

} finally {

db.closeAll();

}

return colname;

}

create table Goods

(

id nvarchar(6) not null

constraint table_name_pk

primary key nonclustered,

name nvarchar(8) not null,

input int not null,

output int not null,

number int not null

)

go

运行截图




成功之后数据却没有改变,刷新也没用,数据库也没变

以上是 java选中table中的某一个值右键事件弹出修改窗口,修改后数据库和表格中数据为什么没有变。 的全部内容, 来源链接: utcz.com/p/944152.html

回到顶部