有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将表的所有数据放入JTable并插入数据库

您好,我的朋友在这段代码中,我想将输入到JTable中的所有数据插入到我的数据库中,但将数据输入到数据库的for循环中出错,结果如下: http://i67.tinypic.com/5mwgt4.png

final void tabledata(){

int rows=jt.getRowCount();
int colms=jt.getColumnCount();
int bpss=0,spss=0;

for(int i=0;i<colms;i++){
for(int j=0;j<rows;j++) {
if(i==0){
    String qtys= jt.getValueAt(j,i).toString();
    int qtyss=Integer.parseInt(qtys);
    System.out.print(qtyss);
    try{stmt.execute("INSERT INTO ITEMS(QTY) VALUES("+qtyss+")");}
    catch (SQLException ex) {ex.printStackTrace();}
}else{ 
if(i==1){

    String codes= jt.getValueAt(j,i).toString();
    int codess=Integer.parseInt(codes);
    System.out.print(codess);
    try{stmt.execute("INSERT INTO ITEMS(CODE) VALUES("+codess+")");}
    catch (SQLException ex) {ex.printStackTrace();}
    } else{ 
if(i==2){

    String names=jt.getValueAt(j,i).toString();
    System.out.print(names);
    try{stmt.execute("INSERT INTO ITEMS(NAME) VALUES('"+names+"')");}
    catch (SQLException ex) {ex.printStackTrace();}
    } else{ 
if(i==3){

   String bps= jt.getValueAt(j,i).toString();
   bpss=Integer.parseInt(bps);
   System.out.print(bpss);
   try{stmt.execute("INSERT INTO ITEMS(BUYPRICE) VALUES("+bpss+")");}
    catch (SQLException ex) {ex.printStackTrace();}
    } else{ 
if(i==4){

   String sps= jt.getValueAt(j,i).toString();
   spss=Integer.parseInt(sps);
   System.out.print(spss);
   try{stmt.execute("INSERT INTO ITEMS(SELLPRICE) VALUES("+spss+")");}
    catch (SQLException ex) {ex.printStackTrace();}
    }}}}}}}

}


共 (2) 个答案

  1. # 1 楼答案

    INSERT将一条全新的记录添加到数据库中。 因此,当您插入数量时,您只使用一个数量创建记录,而所有其他字段都为空。 然后,当你插入代码等,你做同样的事情。因此,创建新记录时,其他字段中没有任何内容。 我建议您读取每一行,然后创建一条sql语句,该语句的内容如下: 在项目(数量、代码、名称、买价、卖价)中插入值(…,…,…)

    这将创建所有字段都已填写的记录

  2. # 2 楼答案

    首先要做的是下载rs2xml。jar安装此jar后,将其添加到库中。因此,您可以将结果集填充到TableModel中。我使用DB Derby制作了一个示例gui,可以在其中插入并填充到表模型中。我在这里用了一份事先准备好的声明

    enter image description here

    private void addBtnActionPerformed(java.awt.event.ActionEvent evt) {                                       
       String inputEmployee = employeeTf.getText();//textfields
       String inputDepartment = departmentTf.getText();//textfields
       
       if(inputEmployee.isEmpty() && inputDepartment.isEmpty()){
             JOptionPane.showMessageDialog(null, "Please fill up!");
        }//If blank
        else if(inputEmployee.isEmpty()){
            JOptionPane.showMessageDialog(null, "Employee Name should not be left blank");//If blank
        }
        else if(inputDepartment.isEmpty()){
            JOptionPane.showMessageDialog(null, "Department should not be left blank");//If blank
        }
        else{
            String myQuery = "INSERT INTO SAMPLE (EMPLOYEENAME,DEPARTMENT) VALUES (?,?)";
            
            try(Connection myCon = DBUtilities.getConnection(DBType.JDBC);//Establish the connection
            PreparedStatement myPs = myCon.prepareStatement(myQuery);
                ){
                
                myPs.setString(1, employeeTf.getText());
                myPs.setString(2, departmentTf.getText());
                
                myPs.executeUpdate(); // Executes the SQL statement in this PreparedStatement object, which must be an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE;
                
                System.out.print("Record is inserted");
                
                DefaultTableModel model = (DefaultTableModel) Table_Employee.getModel();
                model.addRow(new Object[]{employeeTf.getText(),departmentTf.getText()});
            } catch (SQLException ex) {
                DBUtilities.processException(ex);
           }
        }//end of else
    }
    

    Sample

    创建表模型的语法:

    DefaultTableModel model = (DefaultTableModel) Table_Employee.getModel();
                //yourTableModelName            //yourTableName
    model.addRow(new Object[]{employeeTf.getText(),departmentTf.getText()});
                               //yourTextfield     //yourTextfield
    

    希望这有帮助。rs2xml的链接。罐子 http://en.osdn.jp/projects/sfnet_finalangelsanddemons/downloads/rs2xml.jar/