<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FDatabase_SQL_JDBC%2FDatabase_Viewer</id>
		<title>Java/Database SQL JDBC/Database Viewer - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FDatabase_SQL_JDBC%2FDatabase_Viewer"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Database_Viewer&amp;action=history"/>
		<updated>2026-04-21T12:04:57Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Database_Viewer&amp;diff=6973&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Database_Viewer&amp;diff=6973&amp;oldid=prev"/>
				<updated>2010-06-01T06:34:52Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:34, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Database_Viewer&amp;diff=6972&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Database_Viewer&amp;diff=6972&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Database Browser ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.ItemEvent;&lt;br /&gt;
import java.awt.event.ItemListener;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DatabaseMetaData;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
import java.sql.ResultSet;&lt;br /&gt;
import java.sql.ResultSetMetaData;&lt;br /&gt;
import java.sql.SQLException;&lt;br /&gt;
import java.sql.Statement;&lt;br /&gt;
import java.util.Vector;&lt;br /&gt;
import javax.swing.DefaultComboBoxModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JDialog;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JOptionPane;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.table.AbstractTableModel;&lt;br /&gt;
import javax.swing.table.DefaultTableModel;&lt;br /&gt;
public class DatabaseBrowser extends JFrame {&lt;br /&gt;
  protected Connection connection;&lt;br /&gt;
  protected JComboBox catalogBox;&lt;br /&gt;
  protected JComboBox schemaBox;&lt;br /&gt;
  protected JComboBox tableBox;&lt;br /&gt;
  protected JTable table = new JTable();&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    new sun.jdbc.odbc.JdbcOdbcDriver();&lt;br /&gt;
    DatabaseBrowser db = new DatabaseBrowser();&lt;br /&gt;
  }&lt;br /&gt;
  public DatabaseBrowser() throws Exception {&lt;br /&gt;
    ConnectionDialog cd = new ConnectionDialog(this);&lt;br /&gt;
    connection = cd.getConnection();&lt;br /&gt;
    Container pane = getContentPane();&lt;br /&gt;
    pane.add(getSelectionPanel(), BorderLayout.NORTH);&lt;br /&gt;
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);&lt;br /&gt;
    refreshTable();&lt;br /&gt;
    pane.add(new JScrollPane(table), BorderLayout.CENTER);&lt;br /&gt;
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    setSize(600, 450);&lt;br /&gt;
    setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  protected JPanel getSelectionPanel() {&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    panel.add(new JLabel(&amp;quot;Catalog&amp;quot;));&lt;br /&gt;
    panel.add(new JLabel(&amp;quot;Schema&amp;quot;));&lt;br /&gt;
    panel.add(new JLabel(&amp;quot;Table&amp;quot;));&lt;br /&gt;
    catalogBox = new JComboBox();&lt;br /&gt;
    populateCatalogBox();&lt;br /&gt;
    panel.add(catalogBox);&lt;br /&gt;
    schemaBox = new JComboBox();&lt;br /&gt;
    populateSchemaBox();&lt;br /&gt;
    panel.add(schemaBox);&lt;br /&gt;
    tableBox = new JComboBox();&lt;br /&gt;
    populateTableBox();&lt;br /&gt;
    panel.add(tableBox);&lt;br /&gt;
    catalogBox.addItemListener(new ItemListener() {&lt;br /&gt;
      public void itemStateChanged(ItemEvent event) {&lt;br /&gt;
        String newCatalog = (String) (catalogBox.getSelectedItem());&lt;br /&gt;
        try {&lt;br /&gt;
          connection.setCatalog(newCatalog);&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
        }&lt;br /&gt;
        populateSchemaBox();&lt;br /&gt;
        populateTableBox();&lt;br /&gt;
        refreshTable();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    schemaBox.addItemListener(new ItemListener() {&lt;br /&gt;
      public void itemStateChanged(ItemEvent event) {&lt;br /&gt;
        populateTableBox();&lt;br /&gt;
        refreshTable();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    tableBox.addItemListener(new ItemListener() {&lt;br /&gt;
      public void itemStateChanged(ItemEvent event) {&lt;br /&gt;
        refreshTable();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    return panel;&lt;br /&gt;
  }&lt;br /&gt;
  protected void populateCatalogBox() {&lt;br /&gt;
    try {&lt;br /&gt;
      DatabaseMetaData dmd = connection.getMetaData();&lt;br /&gt;
      ResultSet rset = dmd.getCatalogs();&lt;br /&gt;
      Vector values = new Vector();&lt;br /&gt;
      while (rset.next()) {&lt;br /&gt;
        values.addElement(rset.getString(1));&lt;br /&gt;
      }&lt;br /&gt;
      rset.close();&lt;br /&gt;
      catalogBox.setModel(new DefaultComboBoxModel(values));&lt;br /&gt;
      catalogBox.setSelectedItem(connection.getCatalog());&lt;br /&gt;
      catalogBox.setEnabled(values.size() &amp;gt; 0);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      catalogBox.setEnabled(false);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  protected void populateSchemaBox() {&lt;br /&gt;
    try {&lt;br /&gt;
      DatabaseMetaData dmd = connection.getMetaData();&lt;br /&gt;
      ResultSet rset = dmd.getSchemas();&lt;br /&gt;
      Vector values = new Vector();&lt;br /&gt;
      while (rset.next()) {&lt;br /&gt;
        values.addElement(rset.getString(1));&lt;br /&gt;
      }&lt;br /&gt;
      rset.close();&lt;br /&gt;
      schemaBox.setModel(new DefaultComboBoxModel(values));&lt;br /&gt;
      schemaBox.setEnabled(values.size() &amp;gt; 0);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      schemaBox.setEnabled(false);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  protected void populateTableBox() {&lt;br /&gt;
    try {&lt;br /&gt;
      String[] types = { &amp;quot;TABLE&amp;quot; };&lt;br /&gt;
      String catalog = connection.getCatalog();&lt;br /&gt;
      String schema = (String) (schemaBox.getSelectedItem());&lt;br /&gt;
      DatabaseMetaData dmd = connection.getMetaData();&lt;br /&gt;
      ResultSet rset = dmd.getTables(catalog, schema, null, types);&lt;br /&gt;
      Vector values = new Vector();&lt;br /&gt;
      while (rset.next()) {&lt;br /&gt;
        values.addElement(rset.getString(3));&lt;br /&gt;
      }&lt;br /&gt;
      rset.close();&lt;br /&gt;
      tableBox.setModel(new DefaultComboBoxModel(values));&lt;br /&gt;
      tableBox.setEnabled(values.size() &amp;gt; 0);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      tableBox.setEnabled(false);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  protected void refreshTable() {&lt;br /&gt;
    String catalog = (catalogBox.isEnabled() ? catalogBox.getSelectedItem().toString() : null);&lt;br /&gt;
    String schema = (schemaBox.isEnabled() ? schemaBox.getSelectedItem().toString() : null);&lt;br /&gt;
    String tableName = (String) tableBox.getSelectedItem();&lt;br /&gt;
    if (tableName == null) {&lt;br /&gt;
      table.setModel(new DefaultTableModel());&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    String selectTable = (schema == null ? &amp;quot;&amp;quot; : schema + &amp;quot;.&amp;quot;) + tableName;&lt;br /&gt;
    if (selectTable.indexOf(&amp;quot; &amp;quot;) &amp;gt; 0) {&lt;br /&gt;
      selectTable = &amp;quot;\&amp;quot;&amp;quot; + selectTable + &amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
      Statement stmt = connection.createStatement();&lt;br /&gt;
      ResultSet rset = stmt.executeQuery(&amp;quot;SELECT * FROM &amp;quot; + selectTable);&lt;br /&gt;
      table.setModel(new ResultSetTableModel(rset));&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
class ConnectionDialog extends JDialog {&lt;br /&gt;
  protected JTextField useridField;&lt;br /&gt;
  protected JTextField passwordField;&lt;br /&gt;
  protected JTextField urlField;&lt;br /&gt;
  protected boolean canceled;&lt;br /&gt;
  protected Connection connect;&lt;br /&gt;
  public ConnectionDialog(JFrame f) {&lt;br /&gt;
    super(f, &amp;quot;Connect To Database&amp;quot;, true);&lt;br /&gt;
    buildDialogLayout();&lt;br /&gt;
    setSize(300, 200);&lt;br /&gt;
  }&lt;br /&gt;
  public Connection getConnection() {&lt;br /&gt;
    setVisible(true);&lt;br /&gt;
    return connect;&lt;br /&gt;
  }&lt;br /&gt;
  protected void buildDialogLayout() {&lt;br /&gt;
    Container pane = getContentPane();&lt;br /&gt;
    pane.add(new JLabel(&amp;quot;Userid:&amp;quot;));&lt;br /&gt;
    pane.add(new JLabel(&amp;quot;Password:&amp;quot;));&lt;br /&gt;
    pane.add(new JLabel(&amp;quot;URL:&amp;quot;));&lt;br /&gt;
    useridField = new JTextField(10);&lt;br /&gt;
    pane.add(useridField);&lt;br /&gt;
    passwordField = new JTextField(10);&lt;br /&gt;
    pane.add(passwordField);&lt;br /&gt;
    urlField = new JTextField(15);&lt;br /&gt;
    pane.add(urlField);&lt;br /&gt;
    pane.add(getButtonPanel());&lt;br /&gt;
  }&lt;br /&gt;
  protected JPanel getButtonPanel() {&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    JButton btn = new JButton(&amp;quot;Ok&amp;quot;);&lt;br /&gt;
    btn.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent event) {&lt;br /&gt;
        onDialogOk();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    panel.add(btn);&lt;br /&gt;
    return panel;&lt;br /&gt;
  }&lt;br /&gt;
  protected void onDialogOk() {&lt;br /&gt;
    if (attemptConnection()) {&lt;br /&gt;
      setVisible(false);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  protected boolean attemptConnection() {&lt;br /&gt;
    try {&lt;br /&gt;
      connect = DriverManager.getConnection(urlField.getText(), useridField.getText(),&lt;br /&gt;
          passwordField.getText());&lt;br /&gt;
      return true;&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      JOptionPane.showMessageDialog(this, &amp;quot;Error connecting to &amp;quot; + &amp;quot;database: &amp;quot; + e.getMessage());&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ResultSetTableModel extends AbstractTableModel {&lt;br /&gt;
  protected Vector columnHeaders;&lt;br /&gt;
  protected Vector tableData;&lt;br /&gt;
  public ResultSetTableModel(ResultSet rset) throws SQLException {&lt;br /&gt;
    Vector rowData;&lt;br /&gt;
    ResultSetMetaData rsmd = rset.getMetaData();&lt;br /&gt;
    int count = rsmd.getColumnCount();&lt;br /&gt;
    columnHeaders = new Vector(count);&lt;br /&gt;
    tableData = new Vector();&lt;br /&gt;
    for (int i = 1; i &amp;lt;= count; i++) {&lt;br /&gt;
      columnHeaders.addElement(rsmd.getColumnName(i));&lt;br /&gt;
    }&lt;br /&gt;
    while (rset.next()) {&lt;br /&gt;
      rowData = new Vector(count);&lt;br /&gt;
      for (int i = 1; i &amp;lt;= count; i++) {&lt;br /&gt;
        rowData.addElement(rset.getObject(i));&lt;br /&gt;
      }&lt;br /&gt;
      tableData.addElement(rowData);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public int getColumnCount() {&lt;br /&gt;
    return columnHeaders.size();&lt;br /&gt;
  }&lt;br /&gt;
  public int getRowCount() {&lt;br /&gt;
    return tableData.size();&lt;br /&gt;
  }&lt;br /&gt;
  public Object getValueAt(int row, int column) {&lt;br /&gt;
    Vector rowData = (Vector) (tableData.elementAt(row));&lt;br /&gt;
    return rowData.elementAt(column);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isCellEditable(int row, int column) {&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  public String getColumnName(int column) {&lt;br /&gt;
    return (String) (columnHeaders.elementAt(column));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>