当前位置: 首页 > 知识库问答 >
问题:

Android studio无法连接到Azure sql server中的数据库

计均
2023-03-14

我正在使用Android Studio开发应用程序,并使用Azure Sql Server托管我的数据库。问题是我能够连接到SQL服务器上的数据库,但它有一个错误,即在我的数据库中找不到对象。

我发现它可能连接到我的主数据库,而不是我希望它连接到的数据库。有什么解决问题的方法吗?

package com.example.lenovo.testing1;

import android.annotation.SuppressLint;
import android.os.StrictMode;
import android.util.Log;

import java.sql.*;

public class ConnectionClass {
    String hostName = "haozailai.database.windows.net";
    String dbName = "haozailai";
    String user = "username";
    String password = "password";

    @SuppressLint("NewApi")
    public Connection CONN() {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        String ConnURL;
        Connection conn = null;

        try {

            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            String url = String.format("jdbc:jtds:sqlserver://haozailai.database.windows.net:1433;database=haozailai;user=username;password=password;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");
            conn = DriverManager.getConnection(url);

        }catch (SQLException se)
        {
            Log.e("error here 1 : ", se.getMessage());
        }
        catch (ClassNotFoundException e)
        {
           Log.e("error here 2 : ", e.getMessage());
        }
        catch (Exception e)
        {
            Log.e("error here 3 : ", e.getMessage());
        }


        return conn;


    }
}

我的数据库结构图片

共有2个答案

闻人嘉木
2023-03-14

我知道这个答案为时已晚,但我发现这个视频完全有效:https://www.youtube.com/watch?v=WJBs0zKGqH0

问题是,你必须下载一个jtds jar,视频中的人说你可以从哪里获得它,而且,你需要在连接url中的“sqlserver”之前添加“jtds”,并编辑连接url中“databe”的写入方式,如下图所示:jdbc:jtds:sqlserver://serverName.database.windows.net:portNr:DatabaseName=dbName;用户=。。。。

马欣荣
2023-03-14

我试图通过java jdbc连接我的sqlserver,但没有重现您的问题。

我可以成功连接到我的应用程序数据库。

我的测试代码:

import java.sql.*;

public class Test {

    public static final String url = "jdbc:sqlserver://***.database.windows.net:1433;database=***;user=***password=***;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";
    public static final String name = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

    public static Connection conn = null;
    public static PreparedStatement pst = null;
    public static Statement stmt = null;
    public static ResultSet rs = null;

    public static void main(String[] args) {

        try {

            String SQL = "select * from dbo.Student";
            Class.forName(name);
            conn = DriverManager.getConnection(url);

            stmt = conn.createStatement();
            rs = stmt.executeQuery(SQL);

            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }
            close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void close() {
        try {
            conn.close();
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

经过一些研究,我发现这是因为您的连接网址。

您需要修改您的连接url:

jdbc:jtds:sqlserver://haozailai.database.windows.net:1433/<your application db name> ...

有关详细信息,请参阅以下页面。

>

  • https://sourceforge.net/p/jtds/discussion/104389/thread/a672d758/

    如何在Android中使用JTDS驱动连接sql server

    更新答案:

    我已经对您的连接URL做了一点调整,可以正常连接到我的应用程序数据库。

        try {
    
            String SQL = "select * from dbo.Student";
    
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            String url = String.format("jdbc:jtds:sqlserver://***.database.windows.net:1433/<your database name>;user=***;password=***;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");
            conn = DriverManager.getConnection(url);
    
            stmt = conn.createStatement();
            rs = stmt.executeQuery(SQL);
    
            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }
            close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    

    请注意,删除数据库=***并添加“/

    请参考上面的代码并尝试again.Any关注,请告诉我。

    希望它能帮助你。

  •  类似资料:
    • 我正在尝试学习jsp页面中的数据库连接。下面是我的代码: 这是我的servlet: 下面是我的dbConnect类: 问题是,在connect()函数中,当涉及行class.forName(“com.mysql.jdbc.driver”)时。newInstance();它会产生一个错误并进入catch块。这里出了什么问题,有人能帮忙吗?多谢了。 编辑:我按照Nambari说的做了,现在我在行con

    • 我现在面临这个问题已经有几天了。我正在尝试连接到计算机上的。但我没法把这事搞定。请参阅我运行的以下命令和错误消息。 警告:全局可写的配置文件“/etc/MySQL/my.cnf”被忽略错误2002(HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地MySQL服务器(111) 警告:全局可写的配置文件“/etc/MySQL/my.cnf”被忽略输入密码:

    • 我一直在努力使用数据库URL概述部分提到的以下连接字符串从Spring Boot应用程序连接H2数据库: 我还尝试了许多不同的tcp(服务器模式)连接组合,但仍然出现错误,例如“连接中断:”java。网运行Spring Boot app时,SocketTimeoutException:连接超时:localhost:9092”。 那么,如何解决这个问题并通过服务器模式连接到H2数据库呢?

    • 问题内容: 所以我在用Java连接MySQL时遇到问题。这是我的代码: 我得到的错误是线程“ main”中的异常 http://postimg.org/image/593stjvjx/ 在mySQL工作台中,我的连接名是“ worlddb”,主机名是Liquidus(是本地主机) 套接字是MySQL 端口:3306 为什么是这样? 问题答案: 图片中的模式与连接的名称和Database,try w

    • 问题内容: 这是我简单的测试脚本。只是试图做一个基本的选择语句。在教程中找到了基本知识。 经过一个小时的搜索并尝试了一些解决方案,我比开始时就更接近解决问题了。希望我在某个地方犯了一个简单的错误,但我找不到它… 这是我遇到的错误 任何帮助将非常感激! 问题答案: 如果未在URL中指定,则该方言的默认驱动程序将为“ SQL Server” [1]。这意味着您需要在/etc/unixODBC/odbc

    • 我已经把学校的IT项目带回家完成,虽然我可以在学校连接到我的数据库,但我不能在我自己的电脑上连接到它。我更改了数据库类中的目录,并且几乎100%确定该目录是正确的。它总是给我这样的错误: 驱动程序成功加载无法连接:[Microsoft][ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序java.sql.sqlException:[Microsoft][ODBC驱动程序管理器]未找到数据

    • 2012年12月19日下午7:26:55 DBConnect严重:null java.sql.sqlexception:[Microsoft][ODBC Driver Manager]未找到数据源名称,也未在sun.jdbc.ODBC.jdbc.ddc.createsqlexception(jdbcodbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.

    • 当我试图使用Spring Boot 2.2.1连接到DB2时。HikariCP池无法成功连接,但同时连接到JDBC。 null 附加的属性文件: