Как определить модель таблицы, используя векторы в Java - PullRequest
0 голосов
/ 29 августа 2018

Я пытался связать свою таблицу MySQL с моим проектом Java, и я хотел ответить взаимностью моей таблице MySQL на моем фрейме Java. Я написал этот код до сих пор.

try{
    Class.forName(cn);
    Connection con = (Connection) DriverManager.getConnection(url, u, p);
    Statement stmt = (Statement) con.createStatement();
    String q = "select eno,name,salary,dept,(salary*12) as spa from employee;";
    ResultSet rs = stmt.executeQuery(q);
    ResultSetMetaData rsmd = rs.getMetaData();
    int cc=rsmd.getColumnCount();
    Vector columns = new Vector(cc);
    Vector data = new Vector();
    Vector row;

    while(rs.next()) {
        row=new Vector(cc);

        for (int i = 1; i <= cc; i++) {
            row.add(rs.getString(i));
        }

        data.add(row);
    }

JTable table=new JTable(data,columns);
DefaultTableModel m = new DefaultTableModel(data, columns);
jTable1.setModel(m);

} catch (Exception e){
   System.out.println(e.getMessage());
}

Я использовал векторы, и теперь не могу понять, как определить модель для моей таблицы 'jTable1'. Таблица MySQL и ее описание

Любая помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Я думаю, что если вы изучаете программирование на Java с помощью Swing и базы данных, вот пара идей:

  1. Попробуйте сделать заявку поэтапно.
  2. Для начала кодируйте часть GUI только с некоторыми фиктивными данными (не с данными базы данных; вы еще не подключены к базе данных).
  3. В этот момент вы можете отобразить окно (a JFrame) и JTable в нем с некоторыми фиктивными данными (например, созданными в программе).
  4. Теперь, кодируйте аспект базы данных приложения.
  5. Получите данные из таблицы базы данных и убедитесь, что вы можете прочитать и распечатать их на консоли в вашей IDE.
  6. В случае успеха замените фиктивные данные JTable данными из базы данных.
  7. У вас должно быть приложение, показывающее окно с JTable и запрашиваемыми данными базы данных в нем.

Вот ссылка на сборку JTable с использованием Swing GUI в Обучающие программы Oracle по Java .

0 голосов
/ 29 августа 2018

Вам необходимо указать имена столбцов для TableModel. Прямо сейчас вы только что определили пустой вектор, поэтому таблица считает, что в нем 0 столбцов, поэтому отображать нечего.

Вы можете получить имена столбцов из ResultSetMetaData:

String sql = "Select * from ???";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();

//  Get column names

Vector<Object> columnNames = new Vector<Object>();

for (int i = 1; i <= columns; i++)
{
    columnNames.addElement( md.getColumnLabel(i) );
}
0 голосов
/ 29 августа 2018

Я могу предложить несколько предложений по улучшению вашего кода:

  1. Не создавать соединения с базой данных в области действия метода. Используйте пул для управления ими и передайте соединение объекту, который в этом нуждается.
  2. Сделайте ваш SQL статической строкой.
  3. Что эта хранимая процедура делает для вас? Прямо, ванильного SQL должно быть достаточно для запроса таблицы.
  4. Вы должны знать, что возвращает ваша хранимая процедура. Зачем использовать ResultSetMetaData?
  5. Согласно предложению camickr, продолжайте с Vector b / c, который вы используете Swing.
  6. Вы не закрываете ресурсы в области видимости метода.
  7. Не печатать сообщение об исключении на консоль. Записать всю трассировку стека; в нем будет больше информации, чем в простом сообщении.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...