简体   繁体   English

使用Java swing与Oracle 10g创建JDBC连接

[英]creating JDBC connection with Oracle 10g using java swing

i got an unkown source error message in jdbc connection : 我在jdbc连接中收到未知的源错误消息:

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

please help me out from this error...! 请帮助我摆脱这个错误...! Here's the code that I am using : 这是我正在使用的代码:

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);
    }
}

It will be difficult for you to connect to oracle DB using this driver: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 使用此驱动程序将很难连接到Oracle DB: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); .

You should be loading oracle driver. 您应该正在加载oracle驱动程序。

Following is an example to connect to oracle DB: 以下是连接到oracle DB的示例:

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: 编辑:

From oracle docs: 从oracle文档:

It is recommended that you obtain a commercial JDBC driver from a vendor such as your database vendor or your database middleware vendor. 建议您从供应商(例如数据库供应商或数据库中间件供应商)那里获得商业JDBC驱动程序。 Check the list of drivers currently available. 检查当前可用的驱动程序列表。 The JDBC-ODBC Bridge driver is recommended only for experimental use or when no other alternative is available. 建议仅将JDBC-ODBC Bridge驱动程序用于实验性使用,或者在没有其他替代方法时才使用。

You can check more details at : http://docs.oracle.com/javase/1.3/docs/guide/jdbc/getstart/bridge.doc.html 您可以在以下位置查看更多详细信息: http : //docs.oracle.com/javase/1.3/docs/guide/jdbc/getstart/bridge.doc.html

检查您是否在数据源中创建了DNS?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM