【问题标题】:Error connecting to ODBC data source from JDBC从 JDBC 连接到 ODBC 数据源时出错
【发布时间】:2014-05-17 06:40:36
【问题描述】:

编译时没有错误,但运行程序时出现此错误:

java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver

这是我在 SQL Server 的表中插入值的代码。

import javax. swing.*;
        import java.awt.*;
        import java.awt.event.*;
        import java.sql.*;

        class login  implements ActionListener

        {
        JFrame loginframe;
        JPanel loginpanel, loginpanel1;
        JLabel name, password, loginhead, loginstatus;
        JTextField nametxt;
        JPasswordField passwordtxt;
        JButton loginsubmit, loginreset;

        public login()
        {
        loginframe=new JFrame();
        loginframe.setSize(300,300);
        loginframe.setDefaultCloseOperation(loginframe.EXIT_ON_CLOSE);
        loginframe.setVisible(true);

        loginpanel=new JPanel();
        loginpanel1=new JPanel(new GridLayout(4,2));

        loginhead=new JLabel("Login");
        loginstatus=new JLabel("");
        name=new JLabel("Name");
        password=new JLabel("Password");

        nametxt=new JTextField(10);
        passwordtxt=new JPasswordField(10);


        loginsubmit=new JButton("submit");
        loginsubmit.addActionListener(this);
        loginreset=new JButton("Reset");
        loginreset.addActionListener(this);



        loginpanel1.add(loginhead);
        loginpanel1.add(loginstatus);
        loginpanel1.add(name);
        loginpanel1.add(nametxt);
        loginpanel1.add(password);
        loginpanel1.add(passwordtxt);
        loginpanel1.add(loginsubmit);
        loginpanel1.add(loginreset);


        loginpanel.add(loginpanel1);

        loginframe.add(loginpanel);

        }
        public void actionPerformed(ActionEvent ae)
        {
        String name=nametxt.getText();
        String pass=passwordtxt.getText();
        if(ae.getSource()==loginsubmit)
        {
        String url1="jdbc:odbc:"+"login";
        try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection c=DriverManager.getConnection(url1);
        Statement s=c.createStatement();
        PreparedStatement ps=c.prepareStatement("insert into signup values(?,?)");
        s.executeUpdate("create table signup(First_name varchar(20), Password varchar(20))");
        System.out.println("Basic information table created");
        ps.setString(1,name);
        ps.setString(2,pass);
        ps.execute();
        System.out.println("Values inserted");
        s.close();
        c.close();
        }
        catch(Exception e)
        {
        System.out.println(e);
        }
        }


        }

        public static void main(String args[])
        {
        login l=new login();
        }
        }

【问题讨论】:

  • 连接数据库需要相关的jdbc jar文件。
  • 你能说得更具体些吗。我是 JDBC 新手。
  • 有些连接器是用于连接数据库的 jar 文件。对于我的 SQL,它是 MySQL 连接器。
  • 您使用的是什么版本的 Java? Java 8 中删除了 JDBC-ODBC 桥。
  • 不要使用 ODBC 桥——即使在 Java8 之前的版本上也不行。这是越野车而且很慢。请改用本机 JDBC 驱动程序。

标签: sql sql-server jdbc jdbc-odbc


【解决方案1】:

JDBC-ODBC 桥已从 Java 8 中删除。为了连接到 SQL Server 数据库,您需要使用真正的 JDBC 驱动程序。微软提供的是:

Microsoft JDBC Driver for SQL Server

【讨论】:

    【解决方案2】:

    当我必须将我的 java 代码连接到 MSAccess 时,我遇到了同样的问题。 是 从 Java 8 和更高版本中删除了 JDBC-ODBC 桥。现在如果你想将 java 代码连接到数据库或者使用 jdk7 你可以得到它here

    在此处注册并登录以下载 jdk 7。

    通过控制面板-管理工具-ODBC等传统方式连接数据库

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      相关资源
      最近更新 更多