JDBC连接到Azure中的Java数据库

时间:2018-11-28 23:17:21

标签: java sql-server azure jdbc

我在Azure中有一个数据库,想使用我的Java连接到它。 我试过运行示例代码: 包com.function;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;

public class Function {

    public static void main(String[] args) {

        // Connect to database - all strings were taken
        String hostName = "HOSTNAME";
        String dbName = "DBNAME";
        String user = "MY_USER";
        String password = "MY_PASSWORD";
        String url = String.format("jdbc:sqlserver://%s:1433;database=%s;user=%s;password=%s;encrypt=true;"
            + "hostNameInCertificate=*.database.windows.net;loginTimeout=30;", hostName, dbName, user, password);
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url);
            String selectSql = "SELECT * FROM BUSINESSES FOR JSON PATH";

            try (Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(selectSql)) {
                while (resultSet.next())
                {
                    System.out.println(resultSet.getString(1) + " "
                        + resultSet.getString(2));
                }
                connection.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

但是,每次尝试运行它时,都会收到错误enter image description here

我不确定如何解决它,如果有人知道问题出在哪里,那将有很大帮助。

注意-在pom.xml中有对此的引用:

 <maven.compiler.source>1.8</maven.compiler.source>
 <maven.compiler.target>1.8</maven.compiler.target>
 <groupId>com.microsoft.sqlserver</groupId>
 <artifactId>mssql-jdbc</artifactId>
 <version>7.0.0.jre8</version>

1 个答案:

答案 0 :(得分:1)

您似乎是在控制台中启动应用程序(屏幕截图看起来像这样),所以我假设您执行类似的操作

java Function

从类文件所在的目录开始。

以这种方式启动时,必须提供jdbc驱动程序的jar作为类路径:

java -cp .;some/dir/where/the/jar/resides/mssql.jar Function

pom.xml中的引用仅在使用maven时导致jar的下载,但不会自动将其添加到JVM的“全局”类路径中。

如果100%确定JDBC驱动程序是类路径的一部分,则可以尝试自己将驱动程序注册到DriverManager(驱动程序应该自己完成,但其中一些驱动程序可以这样做) t):

DriverManager.registerDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver");