我在jdbc连接中收到了一条未知的源错误消息:
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 :(得分:1)
使用此驱动程序连接到oracle DB很困难:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
。
你应该加载oracle驱动程序。
以下是连接到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!");
}
}
}
编辑:
来自oracle docs:
建议您从a获取商业JDBC驱动程序 供应商,例如数据库供应商或数据库中间件 供应商。检查当前可用的驱动程序列表。 JDBC-ODBC 桥驱动器仅建议用于实验用途或不用 其他替代方案可供选择。
您可以在以下网址查看更多详细信息:http://docs.oracle.com/javase/1.3/docs/guide/jdbc/getstart/bridge.doc.html
答案 1 :(得分:0)
检查您是否在数据源中创建了DNS?