
Опытный
 
Профиль
Группа: Участник
Сообщений: 358
Регистрация: 17.5.2007
Где: Молдова, Кишинев
Репутация: 1 Всего: 1
|
powerOn, сохранилось только 30% сообщения.  Ща попробую ещё раз выложить проблему.... Добавлено через 3 минуты и 37 секунд| Код | private JTable getJTable() throws NullPointerException { if (jTable == null) { jTable = new JTable(); jTable.setRowSelectionAllowed(true); jTable.setCellSelectionEnabled(true); jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTable.setShowGrid(true); jTable.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); // jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jTable.setModel(getDB()); jTable.getColumnModel().getColumn(0).setPreferredWidth(5); jTable.getColumnModel().getColumn(1).setPreferredWidth(35); jTable.getColumnModel().getColumn(2).setPreferredWidth(180); jTable.getColumnModel().getColumn(3).setPreferredWidth(50); jTable.getColumnModel().getColumn(4).setPreferredWidth(50); jTable.getColumnModel().getColumn(5).setPreferredWidth(30); } return jTable; }
|
Создание таблицы. | Код | private database getDB() { if (DB == null) { DB = new database( "SELECT id, code, name, cena, cena1, type, vmenu FROM bliuda ORDER BY code", "stol", "postgres", "syrus", "bliuda",new String[]{"Ид","Код","Наим.","Цена1","Цена2","Тип","ВМеню"}); } return DB; }
|
Модель таблицы. Ну собственно | Код |
//import java.awt.Container; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; import java.util.Vector; import javax.swing.table.AbstractTableModel;
//import org.postgresql.Driver;
/* * Created on 14.06.2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */
/** * @author golden * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ //@SuppressWarnings("serial") public class database extends AbstractTableModel{ /** * */ private static final long serialVersionUID = 1L; public String[] columnNames; public String[] dbcolumnNames; public Vector rows = new Vector(); public ResultSetMetaData metaData; public Statement statement; public ResultSet resultSet; public Connection con; public String tableName; public int getColumnCount() { return columnNames.length; }
public String getColumnName(int n) { //String[] columnNames = {"Фамилия", "Имя", "Отчество", "Дата"}; return columnNames[n]; } public String getDBColumnName(int n) { //String[] columnNames = {"Фамилия", "Имя", "Отчество", "Дата"}; return dbcolumnNames[n]; } public int getDBColumnCount() { return dbcolumnNames.length; } public int getRowCount() { return rows.size(); } public int addRow() {
int r=rows.size()+1; return r; }
public Object getValueAt(int aRow, int aColumn) { Vector row = (Vector)rows.elementAt(aRow); return row.elementAt(aColumn); } //----------------------------------------------------------------------------------------------- public database(String query, String DBNAME, String USERNAME, String PASSWORD, String tableName,String[] columnNames) { this.columnNames = columnNames; this.tableName = tableName; fireTableDataChanged(); @SuppressWarnings("unused") Driver d; try{ d = (Driver)Class.forName("org.postgresql.Driver").newInstance(); } catch (Exception e) { System.out.println("Error 1"); System.out.println(e.getStackTrace()); } try{ con = DriverManager.getConnection //("jdbc:postgresql://localhost:5432/"+DBNAME,USERNAME,PASSWORD); ("jdbc:postgresql://localhost:5432/"+DBNAME,USERNAME,PASSWORD); // statement =con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
statement = con.createStatement(); SqlReload(query); } catch(SQLException e) { System.out.println(e.getMessage()); } } //--------------------------------------------------------------------------------------------- public boolean isCellEditable(int row, int column) { try { return metaData.isWritable(column+1); } catch (SQLException e) { return false; } // return true; } //-------------------------------------------------------------------------------------------- @SuppressWarnings("unchecked") public void setValueAt(Object value, int row, int column) { try { String columnName = dbcolumnNames[column];
// System.out.println(columnName); // System.out.println(dbRepresentation(column, value)); String query = "UPDATE "+tableName+ " SET "+columnName+" = "+ dbRepresentation(column, value)+ " WHERE "; for(int col = 0; col < getColumnCount();col++) { // String colName = getColumnName(col); String colName = getDBColumnName(col);
if (colName==columnName) { continue; } if (col != 0) { query = query + " and "; } query = query + colName +" = "+ dbRepresentation(col, getValueAt(row, col)); } System.out.println(query); PreparedStatement pstmt = con.prepareStatement(query); pstmt.executeUpdate(); System.out.println(pstmt.executeUpdate()); Object val; val = tbRepresentation(column,value); Vector dataRow = (Vector)rows.elementAt(row); dataRow.setElementAt(val, column); fireTableDataChanged(); // System.out.println(dataRow); // fireTableCellUpdated(row,column); } catch (Exception ex) { System.err.println(ex); } }
//------------------------------------------------------------------------------------------- public Object dbRepresentation(int column, Object value) throws NumberFormatException { @SuppressWarnings("unused") Object val; int type; if (value == null) { return "null"; } try { // System.out.println("column+1"); System.out.println("type"); type = metaData.getColumnType(column+1); // System.out.println("type"); // System.out.println(type); } catch (SQLException e) { return value.toString(); } switch(type) { case Types.BIGINT: return val = new Long(value.toString().trim()); case Types.CHAR: // System.out.println("CHAR"); return val = "'"+new String(value.toString().trim())+"'"; case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: // System.out.println("INTEGER"); return val = new Integer(value.toString().trim()); case Types.REAL: case Types.FLOAT: case Types.DOUBLE: case Types.NUMERIC: // System.out.println("NUMERIC"); return val = new Double(value.toString().trim()); default: return val = "'"+new String(value.toString().trim())+"'"; } } //--------------------------------------------------------------------------------------- public Object tbRepresentation(int column, Object value) throws NumberFormatException { @SuppressWarnings("unused") Object val; int type; if (value == null) { return "null"; } try { type = metaData.getColumnType(column+1); } catch (SQLException e) { return value.toString().trim(); }
switch(type) { case Types.BIGINT: return val = new Long(value.toString().trim()); case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: return val = new Integer(value.toString().trim()); case Types.REAL: case Types.FLOAT: case Types.DOUBLE: case Types.NUMERIC: return val = new Double(value.toString().trim()); default: return val = new String(value.toString()); } } //---------------------------------------------------------------------------------------
@SuppressWarnings("unchecked") public void SqlReload(String query) { try{ fireTableDataChanged(); resultSet = statement.executeQuery(query); metaData = resultSet.getMetaData(); int numberOfColumns = metaData.getColumnCount(); dbcolumnNames = new String[numberOfColumns]; for(int column = 1; column <= numberOfColumns; column++) { dbcolumnNames[column-1] = metaData.getColumnName(column); } rows = new Vector(); while (resultSet.next()) { Vector newRow = new Vector(); for (int i = 1; i <= getColumnCount(); i++) { newRow.addElement(resultSet.getObject(i)); } rows.addElement(newRow); } } catch(SQLException e) { System.out.println(e.getMessage()); } } //---------------------------------------------------------------------------------------- public void SqlInsert(String query,String query1) { try{ PreparedStatement pstmt = con.prepareStatement(query); pstmt.executeUpdate(); SqlReload(query1); } catch(SQLException e) { System.out.println(e.getMessage()); } } //****************************************************************************************** public void Sql(String query1) { try{ PreparedStatement pstmt = con.prepareStatement(query1); pstmt.executeUpdate(); // SqlReload(query1); } catch(SQLException e) { System.out.println(e.getMessage()); } } //--------------------------------------------------------------------------------------- public void SqlDelete(String query,String query1,int cur_row) { try{ String query_=query; query_= query_ + tbRepresentation(0, getValueAt(cur_row, 0)); fireTableDataChanged(); PreparedStatement pstmt = con.prepareStatement(query_); System.out.println(query_); pstmt.executeUpdate(); // System.out.println(pstmt.execute()); // PreparedStatement pstmt = // con.prepareStatement(query_); // pstmt.setDouble(1,cur_row); // query_= query_ + dbRepresentation(0, getValueAt(cur_row, 0)); // System.out.println(pstmt.executeUpdate()); // System.out.println(query_); SqlReload(query1); } catch(SQLException e) { System.out.println(e.getMessage()); } } //--------------------------------------------------------------------------------------- public void fireTableRowsDeleted(int firstRow, int lastRow) { // System.out.println("fireTableRowsDeleted"); // rows.remove(firstRow); } public void fireTableRowsInserted(int firstRow, int lastRow) { // Vector newRow = new Vector(); // for (int i = 1; i <= getColumnCount(); i++) // { // newRow.addElement(resultSet.getObject(i)); // } // rows.addElement(newRow); // System.out.println("fireTableRowsInserted"); } //------------------------------------------------------ }
|
Что самое интересное - в этой же проге есть другая таблица так с ней все ок.
|