2013-08-04 3 views
0

я получил сообщение об ошибке Неизвестная источник в JDBC соединения:создания JDBC соединение с Oracle 10g с помощью Java Swing

IDE: java eclipse 
Data Base: oracle 10g 
code : java swing 
DNS name : home 
table name : lg (login) 

пожалуйста, помогите мне с этой ошибки ...! Вот код, который я использую:

package vijay; 

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import javax.swing.*; 
import javax.swing.border.*; 
import java.sql.*; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import java.awt.event.KeyEvent; 

public class jdbc extends JFrame { 
    Connection con=null; 
    Statement st=null; 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 6517038751742780009L; 
    private JPanel contentPane; 
    private JTextField textField; 
    private JPasswordField passwordField; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        jdbc frame = new jdbc(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public jdbc()throws Exception { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     con = DriverManager.getConnection("jdbc:odbc:home","system","sa"); 
     st = con.createStatement(); 
     JOptionPane.showMessageDialog(null, "connected"); 

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 566, 359); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     contentPane.setLayout(new BorderLayout(0, 0)); 
     setContentPane(contentPane); 

     JPanel panel = new JPanel(); 
     contentPane.add(panel, BorderLayout.CENTER); 
     panel.setLayout(null); 

     JLabel lblUserName = new JLabel("user name"); 
     lblUserName.setBounds(144, 89, 70, 14); 
     panel.add(lblUserName); 

     JLabel lblPassword = new JLabel("password"); 
     lblPassword.setBounds(144, 142, 46, 14); 
     panel.add(lblPassword); 

     textField = new JTextField(); 
     textField.setBounds(248, 86, 86, 20); 
     panel.add(textField); 
     textField.setColumns(10); 

     JButton btnLogin = new JButton("login"); 
     btnLogin.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       String un=textField.getText(); 
       String pwd=passwordField.getText().trim(); 
       String str; 
       if(un.equals("vijay")&&pwd.equals("123")) { 
        try { 
         str="insert into lg values('"+un+"','"+pwd+"')"; 
         st.executeUpdate(str); 
         JOptionPane.showMessageDialog(null, "record inserted"); 
        } 
        catch(Exception e) { 
        } 
       } 
       else { 
        JOptionPane.showMessageDialog(null, "Wrong Login Details"); 
       } 
      } 
     }); 
     btnLogin.setBounds(144, 209, 89, 23); 
     panel.add(btnLogin); 
     btnLogin.setMnemonic(KeyEvent.VK_L); 

     JButton btnExit = new JButton("Exit"); 
     btnExit.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       System.exit(0); 
      } 
     }); 
     btnExit.setBounds(254, 209, 89, 23); 
     panel.add(btnExit); 
     btnExit.setMnemonic(KeyEvent.VK_E); 

     passwordField = new JPasswordField(); 
     passwordField.setBounds(247, 142, 86, 20); 
     panel.add(passwordField); 
    } 
} 
+0

Как значения должны быть заполнены рамкой? И не используйте драйвер jdbc-odbc для подключения к базе данных Oracle, это плохая практика. –

ответ

1

Это будет трудно для вас, чтобы подключиться к Oracle DB, используя этот драйвер: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");.

Вы должны загрузить драйвер oracle.

Ниже приведен пример подключения к БД Oracle:

import java.sql.DriverManager; 
import java.sql.Connection; 
import java.sql.SQLException; 

public class OracleJDBC { 

    public static void main(String[] argv) { 

     System.out.println("-------- Oracle JDBC Connection Testing ------"); 

     try { 

      Class.forName("oracle.jdbc.driver.OracleDriver"); 

     } catch (ClassNotFoundException e) { 

      System.out.println("Where is your Oracle JDBC Driver?"); 
      e.printStackTrace(); 
      return; 

     } 

     System.out.println("Oracle JDBC Driver Registered!"); 

     Connection connection = null; 

     try { 

      connection = DriverManager.getConnection(
        "jdbc:oracle:thin:@localhost:1521:test", "username", 
        "password"); 

     } catch (SQLException e) { 

      System.out.println("Connection Failed! Check output console"); 
      e.printStackTrace(); 
      return; 

     } 

     if (connection != null) { 
      System.out.println("You made it, take control your database now!"); 
     } else { 
      System.out.println("Failed to make connection!"); 
     } 
    } 

} 

EDIT:

От оракула Документах

Рекомендуется, чтобы вы получили коммерческий драйвер JDBC из поставщика, такого как поставщик базы данных или промежуточное ПО базы данных . Проверьте список доступных драйверов. Драйвер моста JDBC-ODBC рекомендуется только для экспериментального использования или когда нет другой альтернативы.

Вы можете проверить более подробную информацию по адресу: http://docs.oracle.com/javase/1.3/docs/guide/jdbc/getstart/bridge.doc.html

+0

Поблагодарите u loki, но мой код работает с другой системой, как она работает с другой системой, если это неправильно – user2650543

+0

Я отредактировал свое сообщение, драйвер моста jdbcodbc может работать, но может не работать в зависимости от конфигурации системы. Система, в которой она не работает, может не иметь установленный драйвер odbc. Но я никогда не буду использовать jdbcodbc для подключения к оракулу. – Lokesh

+0

, то есть хороший способ подключения с помощью оракула с использованием кодирования java swing – user2650543

0

проверки, были ли вы создали DNS в источниках данных?

Смежные вопросы