在 Vaadin 项目中找不到合适的驱动程序
No suitable driver found in Vaadin project
是的,又是 Vaadin 的新手。这一次,我想看看我是否可以完成最基本的任务之一:连接到数据库。
我们在这里使用 MS SQL 服务器(我相信是 2012 版)并且我们已经能够在我编写的另外两个 Java 程序中正常连接到它。然而,当尝试使用新创建的 Vaadin 项目做同样的事情时,我被告知 No suitable driver found for jdbc:sqlserver://192.168.0.248;databaseName=job_orders_2014
。我已经检查并确保来自 Microsoft 的所有三个 .jars 都在构建路径中:sqljdbc.jar
、sqljdbc4.jar
和 sqljdbc41.jar
.
这是我写的ConnectionManager
class,它只测试是否可以连接:
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
class,我只是从主要class,因此:
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);
}
}
您的运行时环境中需要依赖项。
请在 Whosebug 上查看此答案:
是的,又是 Vaadin 的新手。这一次,我想看看我是否可以完成最基本的任务之一:连接到数据库。
我们在这里使用 MS SQL 服务器(我相信是 2012 版)并且我们已经能够在我编写的另外两个 Java 程序中正常连接到它。然而,当尝试使用新创建的 Vaadin 项目做同样的事情时,我被告知 No suitable driver found for jdbc:sqlserver://192.168.0.248;databaseName=job_orders_2014
。我已经检查并确保来自 Microsoft 的所有三个 .jars 都在构建路径中:sqljdbc.jar
、sqljdbc4.jar
和 sqljdbc41.jar
.
这是我写的ConnectionManager
class,它只测试是否可以连接:
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
class,我只是从主要class,因此:
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);
}
}
您的运行时环境中需要依赖项。
请在 Whosebug 上查看此答案: