Pergunta

I am working on a project where i get the data from mysql table selected (the table from which data is to be get is selected by user). I am using following code to get data from selected table:

jTextArea1.setText(null);
tableModel.setColumnCount(0);
tableModel.setRowCount(0);
try {
    try {
        Class.forName("java.sql.DriverManager");
        timeget();
        jTextArea4.append(now + ":   " + "/ Driver name Detected successfully / \n \n");
    } catch (ClassNotFoundException e) {
        timeget();
        jTextArea4.append(now + ":   " + "/ Failed in finding Driver \n " + e.getMessage() + " / \n It is recommended that you DO NOT PROCEED ANY FURTHER \n \n");
        JOptionPane.showMessageDialog(null, e.getMessage());
    }
    con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:" + GlobalParams.portvar + "/" + (String) jList1.getSelectedValue(), "" + GlobalParams.uservar, "" + GlobalParams.passvar);
    Statement stmnt = (Statement) con.createStatement();
    String query1 = "Use " + GlobalParams.dbvar;
    stmnt.executeQuery(query1);
    String query2 = "desc " + (String) jList2.getSelectedValue();
    ResultSet rs = stmnt.executeQuery(query2);
    while (rs.next()) {
        fieldo = rs.getString("Field");
        jTextArea1.append(fieldo + "\n");
    }
    tableModel.addColumn(jTextArea1.getText().substring(0, jTextArea1.getText().indexOf("\n")));
    Scanner scanner = new Scanner(jTextArea1.getText());
    timeget();
    jTextArea4.append(now + ":   " + "/ Scanning Available feeds from table '" + (String) jList2.getSelectedValue() + "' / \n");
    timeget();
    jTextArea4.append(now + ":   " + "/ Getting feeds from table '" + (String) jList2.getSelectedValue() + "' / \n \n");
    if (scanner.hasNextLine()) {
        scanner.nextLine();
        while (scanner.hasNextLine()) {

//I BELIEVE MY CODE STARTS TO GO SOMEWHERE WRONG HERE BELOW:

            String line = scanner.nextLine();
            tableModel.addColumn(line);
            Statement stmnt2 = (Statement) con.createStatement();
            String tdataget = "Select " + line + " from " + (String) jList2.getSelectedValue();
            ResultSet rs2 = stmnt2.executeQuery(tdataget);
            while (rs2.next()) {
                String field = rs2.getString(line);
                tableModel.addRow(new Object[]{field});
            }
            int end = jTextArea1.getLineEndOffset(0);
            jTextArea1.replaceRange("", 0, end);
        }
    }
} catch (SQLException e) {
    if (!(e.getMessage().contains("You have an error in your SQL syntax"))) {
        JOptionPane.showMessageDialog(this, e.getMessage());
    }
} catch (BadLocationException ex) {
    JOptionPane.showMessageDialog(this, ex.getMessage());
}

(jList2 is where the name of table is taken from and jList1 contains the database name)

The problem is, for ex. if the table in mysql looks like this->

Col1    |    Col2    |    Col3    |    Col4    |    Col5
---------------------------------------------------------
Data1   |    Data2   |    Data3   |    Data4   |    Data5
Datab1  |    Datab2  |    Datab3  |    Datab4  |    Datab5

In my frame, the table appears like this->

Col1    |    Col2    |    Col3    |    Col4    |    Col5
---------------------------------------------------------
Data1

Data2

Data3

Data4

Data5

Datab1

Datab2

Datab3

Datab4

Datab5

So can anyone please suggest me the code to "switch to next column" in java? Thanks

Foi útil?

Solução

tableModel.addRow(new Object[]{field});

You are adding a row containing an Array with a single value all the time. Instead you need to add an Array that contains all the values of the row.

Check out the TableFromDatabaseExample.java code found in Table From Database for a more general approach that shows how to do this.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top