【发布时间】:2014-06-08 09:17:16
【问题描述】:
我编写了一个自定义 JTable 来在我的 Java 程序中显示我的 SQLite 数据库的内容。代码如下:
public class SortableJTable extends JTable{
public SortableJTable()
{
super();
}
public SortableJTable(DefaultTableModel dtm)
{
super(dtm);
}
@Override
public void setValueAt(Object obj, int row, int col)
{
super.setValueAt(obj, row, col);
PRGView.dbc.updateOrdersWithTicketRequestID(this.getColumnName(col).toString(), obj, (Integer)this.getValueAt(row, 0));
}
@Override
public Class getColumnClass(int c)
{
switch (c)
{
case 0:
return Integer.class;
case 1:
return Integer.class;
case 2:
return String.class;
case 3:
return String.class;
case 4:
return Double.class;
case 5:
return Double.class;
default:
return String.class;
}
}
}
如您所见,每当有人编辑自定义 JTable 中的单元格时(即调用 setValueAt 方法时),我希望能够立即修改数据库内容以反映这些更改。
这是在该方法中调用的数据库代码。
public void updateOrdersWithTicketRequestID(String columnName, Object columnValue, Integer ticketRequestID)
{
try
{
String sql = "UPDATE ORDERS SET ? = ? WHERE Ticket_Request_ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, columnName);
pstmt.setObject(2, columnValue);
pstmt.setInt(3, ticketRequestID);
pstmt.executeUpdate();
pstmt.close();
}
catch (SQLException e){}
}
一旦我的代码得到这个语句:
pstmt = conn.prepareStatement(sql);
在上面的代码中,它返回错误:SQL错误或缺少数据库(“?”附近:语法错误)。
我有两个问题:
1) 为什么我会收到此错误消息? (我是否错误地执行了准备好的语句?)
2) 我的自定义 JTable 类中的 getColumnClass 没有正确排序我的列。它们总是按字符串顺序排序,而不是使用我布置的开关盒。我做错了吗?
感谢您的帮助!
【问题讨论】:
标签: java swing sqlite netbeans-7