zoukankan      html  css  js  c++  java
  • 访问oracle数据库

    /**
       @version 1.30 2004-08-05
       @author Cay Horstmann
    */
    
    import java.net.*;
    import java.sql.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import javax.swing.*;
    import oracle.jdbc.pool.*;
    
    /**
       This program uses metadata to display arbitrary tables
       in a database.
    */
    public class ViewDB
    {  
       public static void main(String[] args)
       {  
          JFrame frame = new ViewDBFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setVisible(true);
       }
    }
    
    /**
       The frame that holds the data panel and the navigation 
       buttons.
    */
    class ViewDBFrame extends JFrame
    {
       public ViewDBFrame()
       {  
          setTitle("ViewDB");
          setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    
          tableNames = new JComboBox();
          tableNames.addActionListener(new
             ActionListener()
             {
                public void actionPerformed(ActionEvent event)
                {
                   showTable((String) tableNames.getSelectedItem());
                }
             });
          add(tableNames, BorderLayout.NORTH);
    
          try
          {  
             conn = getConnection();         
             meta = conn.getMetaData();
             createStatement();
             getTableNames();
          }
          catch (SQLException e)
          {  
             JOptionPane.showMessageDialog(this, e);
          }
          catch (IOException e)
          {  
             JOptionPane.showMessageDialog(this, e);
          }      
    
          JPanel buttonPanel = new JPanel();
          add(buttonPanel, BorderLayout.SOUTH);
    
          if (scrolling)
          {
             previousButton = new JButton("Previous");
             previousButton.addActionListener(new
                ActionListener()
                {
                   public void actionPerformed(ActionEvent event)
                   {
                      showPreviousRow();
                   }
                });
             buttonPanel.add(previousButton);
          }
    
          nextButton = new JButton("Next");
          nextButton.addActionListener(new
             ActionListener()
             {
                public void actionPerformed(ActionEvent event)
                {
                   showNextRow();
                }
             });
          buttonPanel.add(nextButton);
    
          addWindowListener(new
             WindowAdapter()
             {  
                public void windowClosing(WindowEvent event)
                {  
                   try
                   {                   
                      if (conn != null) conn.close();
                   }
                   catch (SQLException e) 
                   {
                      while (e != null)
                      {
                         e.printStackTrace();
                         e = e.getNextException();
                      }
                   }
                }
            });
       }
    
       /**
          Creates the statement object used for executing queries.
          If the database supports scrolling cursors, the statement
          is created to yield them.
       */
       public void createStatement() throws SQLException
       {
          if (meta.supportsResultSetType(
             ResultSet.TYPE_SCROLL_INSENSITIVE))
          {
             stat = conn.createStatement(
                ResultSet.TYPE_SCROLL_INSENSITIVE, 
                ResultSet.CONCUR_READ_ONLY);
             scrolling = true;
          }
          else
          {
             stat = conn.createStatement();
             scrolling = false;
          }
       }
       
       /**
          Gets all table names of this database and adds them
          to the combo box.
       */
       public void getTableNames() throws SQLException
       {
          ResultSet mrs = meta.getTables(null, null, null, new String[] { "TABLE" });
          while (mrs.next())
             tableNames.addItem(mrs.getString(3));
          mrs.close();
       }
    
       /**
          Prepares the text fields for showing a new table, and
          shows the first row.
          @param tableName the name of the table to display
       */
       public void showTable(String tableName)
       {  
          try
          {  
             if (rs != null) rs.close();
             rs = stat.executeQuery("SELECT * FROM " + tableName);
             if (scrollPane != null) 
                remove(scrollPane);
             dataPanel = new QDataPanel(rs);
             scrollPane = new JScrollPane(dataPanel);
             add(scrollPane, BorderLayout.CENTER);
             validate();
             showNextRow();
          }
          catch (SQLException e)
          {  
             JOptionPane.showMessageDialog(this, e);
          }
       }
    
       /**
          Moves to the previous table row.
       */
       public void showPreviousRow()
       {  
          try
          {  
             if (rs == null || rs.isFirst()) return;
             rs.previous();
    
             dataPanel.showRow(rs);
          }
          catch (SQLException e)
          {  
             JOptionPane.showMessageDialog(this, e);
          }      
       }
    
       /**
          Moves to the next table row.
       */
       public void showNextRow()
       {  
          try
          {  
             if (rs == null || scrolling && rs.isLast()) return;
    
             if (!rs.next() && !scrolling) 
             { 
                rs.close(); 
                rs = null; 
                return; 
             }
    
             dataPanel.showRow(rs);
          }
          catch (SQLException e)
          {  
             JOptionPane.showMessageDialog(this, e);
          }      
       }
    
       /**
          Gets a connection from the properties specified
          in the file database.properties
          @return the database connection
       */
       public static Connection getConnection()
          throws SQLException, IOException
       {  
          /*
          Properties props = new Properties();
          FileInputStream in 
             = new FileInputStream("database.properties");
          props.load(in);
          in.close();
    
          String drivers = props.getProperty("jdbc.drivers");
          if (drivers != null) System.setProperty("jdbc.drivers", drivers);
          String url = props.getProperty("jdbc.url");
          String username = props.getProperty("jdbc.username");
          String password = props.getProperty("jdbc.password");
    
          return DriverManager.getConnection(url, username, password);
          
           
           */
          OracleDataSource ds = new OracleDataSource();
          ds.setURL("jdbc:oracle:thin:@10.69.11.25:1521:ora");
          return ds.getConnection("nick","nick");
       }
    
       public static final int DEFAULT_WIDTH = 300;
       public static final int DEFAULT_HEIGHT = 200;  
    
       private JButton previousButton;
       private JButton nextButton;
       private QDataPanel dataPanel;
       private Component scrollPane;
       private JComboBox tableNames;
    
       private Connection conn;
       private Statement stat;
       private DatabaseMetaData meta;
       private ResultSet rs;
       private boolean scrolling;
    }
    
    /**
       This panel displays the contents of a result set.
    */
    class QDataPanel extends JPanel
    {
       /**
          Constructs the data panel.
          @param rs the result set whose contents this panel displays
       */
       public QDataPanel(ResultSet rs) throws SQLException
       {
          fields = new ArrayList<JTextField>();
          setLayout(new GridBagLayout());
          GridBagConstraints gbc = new GridBagConstraints();
          gbc.gridwidth = 1;
          gbc.gridheight = 1;
    
          ResultSetMetaData rsmd = rs.getMetaData();
          for (int i = 1; i <= rsmd.getColumnCount(); i++)
          {  
             gbc.gridy = i - 1;
    
             String columnName = rsmd.getColumnLabel(i);
             gbc.gridx = 0;
             gbc.anchor = GridBagConstraints.EAST;
             add(new JLabel(columnName), gbc);
    
             int columnWidth = rsmd.getColumnDisplaySize(i);
             JTextField tb = new JTextField(columnWidth);
             fields.add(tb);
    
             gbc.gridx = 1;
             gbc.anchor = GridBagConstraints.WEST;
             add(tb, gbc);
          }      
       }
    
       /**
          Shows a database row by populating all text fields
          with the column values.
       */
       public void showRow(ResultSet rs) throws SQLException
       {  
          for (int i = 1; i <= fields.size(); i++)
          {  
             String field = rs.getString(i);
             JTextField tb = (JTextField) fields.get(i - 1);
             tb.setText(field);
          }
       }
    
       private ArrayList<JTextField> fields;
    }
  • 相关阅读:
    Fidder4 顶部提示 “The system proxy was changed,click to reenable fiddler capture”。
    redis 哨兵 sentinel master slave 连接建立过程
    虚拟点赞浏览功能的大数据量测试
    python基础练习题(题目 字母识词)
    python基础练习题(题目 回文数)
    python基础练习题(题目 递归求等差数列)
    python基础练习题(题目 递归输出)
    python基础练习题(题目 递归求阶乘)
    python基础练习题(题目 阶乘求和)
    python基础练习题(题目 斐波那契数列II)
  • 原文地址:https://www.cnblogs.com/qqjue/p/2502552.html
Copyright © 2011-2022 走看看