【问题标题】:Azure connect java Web App(java) to SQLDatabaseAzure 将 java Web App(java) 连接到 SQLDatabase
【发布时间】:2015-12-11 09:22:50
【问题描述】:

尝试在 Azure 中将 Web App - Java 与 SQL 数据库连接起来。 我使用了这个例子和这个页面: https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-java-simple-windows/

我复制粘贴我的连接字符串并将我的 IP 添加到 SQL 服务器/我的数据库/设置/防火墙设置

当我从 Tomcat8(Eclipse) 本地运行它时,我得到了底部错误。

我可以使用我在 conn 中使用的 User 和 Pass 连接 SQL Management Studio。字符串,所以访问数据应该是正确的。 我还添加了从文章链接下载的 sqljdbc4.jar 库。

java.sql.SQLException:找不到适合 jdbc 的驱动程序:sqlserver://mydatabase.database.windows.net:1433;database=mydatabase;user=[Server admin]@mydatabase;password=[MyAdminPassword];encrypt =true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30; 在 java.sql.DriverManager.getConnection(DriverManager.java:689) 在 java.sql.DriverManager.getConnection(DriverManager.java:270) 在客户webservice.SQLDatabaseTest.getDatabase(SQLDatabaseTest.java:30) 在 customerwebservice.GetCustomers.doGet(GetCustomers.java:34) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745)

代码:

import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;

public class SQLDatabaseTest {

public String getDatabase(){

    String connectionString = "";

    connectionString = "jdbc:sqlserver://mydatabase.database.windows.net:1433;database=mydatabase;user=[Server admin]@mydatabase;password=[My Password];encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";

    // Declare the JDBC objects.
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    PreparedStatement prepsInsertPerson = null;
    PreparedStatement prepsUpdateAge = null;

    try {           
        connection = DriverManager.getConnection(connectionString);

        return "Connected";      
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    finally {
        // Close the connections after the data has been handled.
        if (prepsInsertPerson != null) try { prepsInsertPerson.close(); } catch(Exception e) {}
        if (prepsUpdateAge != null) try { prepsUpdateAge.close(); } catch(Exception e) {}
        if (resultSet != null) try { resultSet.close(); } catch(Exception e) {}
        if (statement != null) try { statement.close(); } catch(Exception e) {}
        if (connection != null) try { connection.close(); } catch(Exception e) {}
    }

   return "Not Connected"; 


   }
}

已编辑: 我发现出了什么问题。因为我使用的是 Mac,所以没有将 sqljdbc42.jar 文件添加到 Classpath 中。在 Windows 中您只需运行 .exe,但在 Mac 上您需要手动添加它。

这个答案帮助我将它添加到 Classpath:https://stackoverflow.com/a/1676261/1436690

但是现在我还有一个问题,因为我还需要将 sqljdbc42.jar 添加到 Azure Web App 的类路径中。

【问题讨论】:

    标签: java sql-server azure jdbc


    【解决方案1】:

    我知道出了什么问题。因为我使用的是 Mac,所以没有将 sqljdbc42.jar 文件添加到类路径中。在 Windows 中您只需运行 .exe,但在 Mac 上您需要手动添加它。

    这个答案帮助我将它添加到 Classpath: https://stackoverflow.com/a/1676261/1436690

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 2014-01-20
      相关资源
      最近更新 更多