Java 添加数据库中不存在的额外列

Java 添加数据库中不存在的额外列,java,swing,jtable,Java,Swing,Jtable,下面是我从数据库创建表的代码。我想在末尾添加一个复选框列,它将不在数据库中。它只是前端的一部分。你能帮忙吗 我的getRow()方法一直返回-1,尽管选择了一行,但有什么建议吗 package Default; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table

下面是我从数据库创建表的代码。我想在末尾添加一个复选框列,它将不在数据库中。它只是前端的一部分。你能帮忙吗

我的getRow()方法一直返回-1,尽管选择了一行,但有什么建议吗

  package Default;
 import javax.swing.*;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
import javax.swing.table.*;
 import java.sql.*;

/**
 * This class create JTable from Database table.
 * User program needs to specify database connection and corresponding a table name.
 * 
 */

public class DBTable{
//private String table;

DefaultTableModel dm=new DefaultTableModel();
JTable t1=new JTable();
Object row[];
String c[];
int cols;
PreparedStatement pst;
ResultSet rs  ;  

public DBTable(Connection conn){
   conn=Login.con;
}

/**
* This method return JTable object created from Database table having selected data and structur     * as in original table into database.
* @param table Name of the database table to be coverted to JTable
* @param query Select query to specify selected columns and data to extracted from database table
* @return JTable object that consist of selected data and structure of Database table
* @throws java.lang.Exception Original object is deferent, e.i either SQLException or NullPointerException
*/

public JTable getTable(String table,String query)throws Exception{

    JTable t1=new JTable();
    DefaultTableModel dm=new DefaultTableModel();
    Statement st= Login.con.createStatement();
    ResultSet rs=st.executeQuery(query);
    ResultSetMetaData rsmd=rs.getMetaData();
    //Coding to get columns-
    int cols=rsmd.getColumnCount();
    String c[]=new String[cols];
    for(int i=0;i<cols;i++){
        c[i]=rsmd.getColumnName(i+1);
        dm.addColumn(c[i]);
    }



    //get data from rows
    Object row[]=new Object[cols];
    while(rs.next()){
         for(int i=0;i<cols;i++){
                row[i]=rs.getString(i+1);
            }
        dm.addRow(row);
    }
    t1.setModel(dm);


    return t1;
}


      public int getRow(){

 int row =   t1.getSelectedRow();
JOptionPane.showMessageDialog(null, row);

    return  row; 
}

public void deleteRow(String sql){

try {
    String value = (String) t1.getValueAt(getRow(), 0);
    JOptionPane.showMessageDialog(null, value);
    pst = Login.con.prepareStatement(sql);
    pst.setString(1,  value);
    ((DefaultTableModel)t1.getModel()).removeRow(getRow());
    pst.execute();
    JOptionPane.showMessageDialog(null, "Deleted");


   } catch (Exception e) {
      e.printStackTrace();
      JOptionPane.showMessageDialog(null, e);
     }
}
}
包默认值;
导入javax.swing.*;
导入javax.swing.event.ListSelectionEvent;
导入javax.swing.event.ListSelectionListener;
导入javax.swing.table.*;
导入java.sql.*;
/**
*此类从数据库表创建JTable。
*用户程序需要指定数据库连接和相应的表名。
* 
*/
公共类数据库表{
//私有字符串表;
DefaultTableModel dm=新的DefaultTableModel();
JTable t1=新的JTable();
对象行[];
字符串c[];
int cols;
编制报表pst;
结果集rs;
公共数据库表(连接连接){
conn=Login.con;
}
/**
*此方法将从具有选定数据和structur*的数据库表创建的JTable对象返回到数据库中,如原始表中所示。
*@param要转换为JTable的数据库表的表名
*@param query Select query指定要从数据库表中提取的选定列和数据
*@return由选定数据和数据库表结构组成的JTable对象
*@throws java.lang.Exception原始对象是不同的,例如SQLException或NullPointerException
*/
公共JTable getTable(字符串表、字符串查询)引发异常{
JTable t1=新的JTable();
DefaultTableModel dm=新的DefaultTableModel();
语句st=Login.con.createStatement();
结果集rs=st.executeQuery(查询);
ResultSetMetaData rsmd=rs.getMetaData();
//编码以获取列-
int cols=rsmd.getColumnCount();
字符串c[]=新字符串[cols];

对于(int i=0;i您使用的是DefaultTableModel,因此在创建模型后,您可以手动添加列:

model.addColumn("CheckBox Column");

t谢谢你的建议,但我设法让它起作用。但是我如何在模型中使用
getColumnClass
将类型设置为Boolean@Sarah。