在Vaadin项目中找不到合适的驱动程序

时间:2015-03-25 17:57:05

标签: java sql-server jdbc vaadin

是的,它再次成为Vaadin的新手。这一次,我试图看看我是否可以完成最基本的任务之一:连接到数据库。

我们在这里使用MS SQL Server(我相信2012版),我们已经能够在我编写的其他两个Java程序中很好地连接到它。然而,当尝试使用新创建的Vaadin项目做同样的事情时,我被告知No suitable driver found for jdbc:sqlserver://192.168.0.248;databaseName=job_orders_2014。我检查并确保Microsoft的所有三个.jars都在构建路径中:sqljdbc.jarsqljdbc4.jarsqljdbc41.jar

这是我写过的ConnectionManager课程,它只测试是否可以获得连接:

package info.chrismcgee.sky.vaadinsqltest.dbutil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Logger;

public class ConnectionManager {

Logger logger = Logger.getLogger(ConnectionManager.class.getName());

private static final String USERNAME = "web";
private static final String PASSWORD = "web";
private static final String CONN_STRING = "jdbc:sqlserver://192.168.0.248;databaseName=job_orders_2014";

public ConnectionManager() throws SQLException, ClassNotFoundException {

//      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        Connection conn = null;

        try {
            conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
            System.out.println("Connected!");
        } catch (SQLException e) {
            System.err.println(e);
        } finally {
            if (conn != null) {
                conn.close();
            }
        }
    }

}

结果是我之前提到的SQLException消息。我已经尝试过使用和不使用Class.forName...行,这显然只适用于7以下的Java版本(我们使用的是版本8)。启用该行后,我会改为ClassNotFoundException

是什么给出了?

编辑04/01/2015:为了帮助说明如何调用此ConnectionManager类,我只是从主类创建它的实例,因此:

package info.chrismcgee.sky.vaadinsqltest;

import java.sql.SQLException;

import info.chrismcgee.sky.vaadinsqltest.dbutil.ConnectionManager;

import javax.servlet.annotation.WebServlet;

import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;

@SuppressWarnings("serial")
@Theme("vaadinsqltest")
public class VaadinsqltestUI extends UI {

    @WebServlet(value = "/*", asyncSupported = true)
    @VaadinServletConfiguration(productionMode = false, ui = VaadinsqltestUI.class)
    public static class Servlet extends VaadinServlet {
    }

    @Override
    protected void init(VaadinRequest request) {
        final VerticalLayout layout = new VerticalLayout();
        layout.setMargin(true);
        setContent(layout);

        Button button = new Button("Click Me");
        button.addClickListener(new Button.ClickListener() {
            public void buttonClick(ClickEvent event) {
                try {
                    ConnectionManager connMan = new ConnectionManager();
                } catch (SQLException | ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                layout.addComponent(new Label("Thank you for clicking"));
            }
        });
        layout.addComponent(button);
    }

}

1 个答案:

答案 0 :(得分:1)

您需要在运行时环境中使用依赖项。

请在stackoverflow上查看这个答案:

https://stackoverflow.com/a/19630339