У меня есть JTable
, которые имеют простую структуру, я хочу заполнить ее данными базы данных.Простые данные базы данных шоу в JTable
Я пишу этот код, но теперь не знаю, как продолжить!
У меня есть JTable
, которые имеют простую структуру, я хочу заполнить ее данными базы данных.Простые данные базы данных шоу в JTable
Я пишу этот код, но теперь не знаю, как продолжить!
Простые данные показывают базы данных в JTable
Там нет необходимости создавать пользовательские TableModel.
См. Код Table From Database Example
в Table From Database для простого способа загрузки данных в модель DefaultTableModel и отображения модели в JTable.
Мне нужно создайте пользовательский TableMode, например. Я думаю, что моя основная проблема заключается в отправке данных в массив или вектор, а затем создание таблицы. – Sajad
camickr - эксперт по Swing. Когда он говорит вам, что DefaultTableModel достаточно, вы должны слушать и попробовать. – duffymo
Тот, кто настолько глуп, чтобы включать пустой блок поймать обязательно бороться:
} catch (SQLException ex) {
}
Это очень плохая идея. Вы должны регистрировать или печатать трассировку стека минимум или добавить предложение throws в подпись метода и обрабатывать ее в другом месте.
Ваш стиль кода также плохой. Вопросы читаемости. Разработайте единый последовательный стиль и придерживайтесь его.
Это исключение происходит из-за переменной cols, которая нигде не инициализировалась.
, поэтому вы должны инициализировать все поля в конструкторе TableModels или вне таблицыModel.
ну, тогда вы не должны использовать метаданные или любую другую базу данных в основных методах TableModels.
только в конструкторе или на стороне столаModel.
такой. попробуйте:
class d9tableModel extends AbstractTableModel {
Connection con;
Statement statement;
ResultSetMetaData metadata;
ResultSet resultSet;
String dbName = "mydb";
String bdUser = "root";
String dbPassword = "2323";
String dbUrl = "jdbc:mysql://localhost/mydb";
String query = "select * from mytable";
ArrayList<String> cols = new ArrayList<>();
ArrayList<ArrayList<String>> data = new ArrayList<>();
public d9tableModel() {
try {
con = DriverManager.getConnection(dbUrl, bdUser, dbPassword);
System.out.println("Connected to database successfully!");
statement = con.createStatement();
resultSet = statement.executeQuery(query);
int c = resultSet.getMetaData().getColumnCount();
for (int i = 0; i < c; i++) {
cols.add(resultSet.getMetaData().getColumnName(i));
}
while (resultSet.next()) {
ArrayList<String> row = new ArrayList<>();
for (int i = 0; i < c; i++) {
row.add(resultSet.getString(i));
}
data.add(row);
}
} catch (SQLException ex) {
System.out.println("Could not connect to database");
} finally {
try {
if (statement != null) {
statement.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
Logger.getLogger(d9tableModel.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return cols.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
ArrayList<String> row = data.get(rowIndex);
return row.get(columnIndex);
}
@Override
public String getColumnName(int column) {
return cols.get(column);
}}
Эта таблица модели точно отображает таблицу базы данных в вашем JTable.
извините за плохой английский язык каждое тело.
удачи.
@kleopatra Я запустил этот код, и был показан только первый столбец! после добавления циклов 'i <= c', проблема решена! – Sajad
@kleopatra Я не знаю, что не должен редактировать какой-либо ответ, спасибо ... – Sajad
@ Саяд, вы правильно заметили ошибку, основная проблема заключалась в том, что вы исправили ее не полностью: корректируя только верхнюю границу, а не нижнюю: -) Омид, индекс в наборе результатов основан на 1, а не на 0, вам нужно отредактировать и исправить цикл соответствующим образом. – kleopatra
В чем проблема, с которой вы сталкиваетесь? Как я вижу, вы никогда не изменяете свои массивы данных [] [] и cols [], и они являются нулями, поэтому вы либо получаете какое-то исключение, либо ваша таблица пуста. – nkukhar
У вас есть какие-либо проблемы или вы просто хотите узнать, как использовать JTable? Если последнее верно, в Интернете есть много учебников, за которыми вы можете следовать. –
Возможно, вы захотите посмотреть http://docs.oracle.com/javase/tutorial/jdbc/basics/jdbcswing.html –