Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接Netbeans中azure数据库的Java程序出现错误_Java_Mysql_Netbeans_Azure Database Mysql - Fatal编程技术网

连接Netbeans中azure数据库的Java程序出现错误

连接Netbeans中azure数据库的Java程序出现错误,java,mysql,netbeans,azure-database-mysql,Java,Mysql,Netbeans,Azure Database Mysql,我得到以下错误: 我尝试了各种方法,但我遇到了一个错误,请查看以下错误 运行:java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver位于 java.net.URLClassLoader.findClassURLClassLoader.java:381 at java.lang.ClassLoader.LoadClassLoader.java:424 at sun.misc.Launcher$Ap

我得到以下错误:

我尝试了各种方法,但我遇到了一个错误,请查看以下错误

运行:java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver位于 java.net.URLClassLoader.findClassURLClassLoader.java:381 at java.lang.ClassLoader.LoadClassLoader.java:424 at sun.misc.Launcher$AppClassLoader.loadClassLauncher.java:338 at java.lang.ClassLoader.LoadClassLoader.java:357 at 位于的java.lang.Class.ForName0本机方法 java.lang.Class.forNameClass.java:264 at com.sqldbsamples.App.mainApp.java:23

生成成功的总时间:0秒

这是我的代码:请帮助我如何使用java程序将我的数据库连接到azure

public class App {

    public static void main(String[] args) {

        // Connect to database
        String hostName = "testchinnaa.database.windows.net:1433"; // update me
        String dbName = "Test_Gopi"; // update me
        String user = "chinna"; // update me
        String password = "******"; // update me

        String url = String.format("jdbc:sqlserver://testchinnaa.database.windows.net:1433;database=Test_Gopi;user=chinna@testchinna;password=*****;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"
            + "hostNameInCertificate=*.database.windows.net;loginTimeout=30;", hostName, dbName, user, password);
        Connection connection = null;
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            connection = DriverManager.getConnection(url);
            String schema = connection.getSchema();
            System.out.println("Successful connection - Schema: " + schema);

            System.out.println("Query data example:");
            System.out.println("=========================================");

            // Create and execute a SELECT SQL statement.
            String selectSql = "SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName "
                + "FROM [SalesLT].[ProductCategory] pc "  
                + "JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid";

            try (Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(selectSql)) {

                // Print results from select statement
                System.out.println("Top 20 categories:");
                while (resultSet.next())
                {
                    System.out.println(resultSet.getString(1) + " "
                        + resultSet.getString(2));
                }
                connection.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

抱歉,您必须确定您使用的是MySql还是MSSql。你说你用了mysql。但是,在连接字符串中,它是sqlserver,这意味着它是MSSql

以下是使用java访问数据库的教程:

您需要下载数据库的连接器:

对于MySql:

对于MSSql:

手动将连接器jar文件添加到类路径。或者,您可以使用Maven dependencies manager在项目中安装和配置Connector/J库

<!-- Example for mysql -->
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.18</version>
</dependency>
对于MySql:

Connection conn = null;
ResultSet rs = null;
try {
    Class.forName("com.mysql.cj.jdbc.Driver");
    String connectionUrl = "jdbc:mysql://{server_name}.mysql.database.azure.com:3306?useSSL=true&requireSSL=false&serverTimezone=UTC";;
    conn = DriverManager.getConnection(connectionUrl, "username_from_portal, like: jack@mysqldemo258", "password");
    rs = conn.prepareStatement("show databases").executeQuery();

    while(rs.next()){
        System.out.println(rs.getString(1));
    }
} catch (ClassNotFoundException e) {
    e.printStackTrace();
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try{
        if(rs != null) rs.close();
        if(conn != null) conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

它是mysql还是mssql?它是使用Java的mysql我收到以下错误:com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层SSL加密建立到SQL Server的安全连接。错误:java.security.cert.CertificateException:在安全套接字层SSL初始化期间验证证书中的服务器名称失败。服务器名称为*.database.windows.net,证书中的名称为cr2.eastus1-a.control.database.windows.net。。 at@chinna98您使用哪个jdbc驱动程序版本?旧版本的驱动程序似乎有问题。所以,请检查您的jdk版本并选择正确的最新驱动程序版本。@chinna98您还有其他问题吗?没有。不过我没有检查那个驱动程序,我会尽快检查
Connection conn = null;
ResultSet rs = null;
try {
    Class.forName("com.mysql.cj.jdbc.Driver");
    String connectionUrl = "jdbc:mysql://{server_name}.mysql.database.azure.com:3306?useSSL=true&requireSSL=false&serverTimezone=UTC";;
    conn = DriverManager.getConnection(connectionUrl, "username_from_portal, like: jack@mysqldemo258", "password");
    rs = conn.prepareStatement("show databases").executeQuery();

    while(rs.next()){
        System.out.println(rs.getString(1));
    }
} catch (ClassNotFoundException e) {
    e.printStackTrace();
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try{
        if(rs != null) rs.close();
        if(conn != null) conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}