【问题标题】:MS SQL Connection: Android Studio never connects vs Eclipse IDE doesMS SQL 连接:Android Studio 从不连接 vs Eclipse IDE
【发布时间】:2020-11-03 23:17:48
【问题描述】:

我正在为当地组织创建一个程序来盘点。应用程序通过 MSSQL 8.2 连接器连接到 SQL Server。手机上的应用程序应允许接收和发送物品信息。我有一个静态类来连接到数据库,它处理连接。在 Eclipse 中,我能够成功连接和查询数据库。在 Android Studio 中,每次尝试连接时都会出错。

-服务器托管在同一台电脑上。

-端口已重复配置。目前已完全开放 TCP 和 UDP 的入站和出站规则。 SQL Server 的动态端口已打开。 SQL server 的服务已经重启了几十次。 1433 已启用并关闭,但当前为空白。

-尝试通过IP地址连接,无法解析主机

-权限被编辑以允许登录访问修改数据库

-集成安全和TLS安全尝试不同时间,都失败了。

错误列表:

  • 与主机 BLACK-G 的“xxxxx”端口 1433 的连接失败。 与主机的 TCP/IP 连接失败,无法解析主机。

  • 连接到名为 BLACK-G 实例 sqlexpress 的主机失败,否
    与主机名关联的地址,打开 UDP 流量到端口 1434 未知的主机异常。无法解析主机 BLACK-G

  • 连接被拒绝

  • 连接失败

  • 与主机 192.168.1.219 的连接失败。连接失败 192.168.1.219(端口 1433)在 2478 毫秒后从 192.168.1.87(端口 33654)验证连接属性。

这里是代码

package com.example.ccupboard_1;

import android.os.Build;

import androidx.annotation.RequiresApi;

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


 public class DatabaseJAVA  {

   //  @RequiresApi(api = Build.VERSION_CODES.KITKAT)//public static void main(String[] args) {
    public static String Connect() {

        // Create a variable for the connection string.
      
         String connectionUrl = "jdbc:sqlserver://BLACK-G\\SQLEXPRESS;user=ay7;password=343434;databaseName=ayTestDatabase2;" ;

        ResultSet resultSet = null;
        
   

        try (Connection connection = DriverManager.getConnection(connectionUrl);
             Statement statement = connection.createStatement();) {

            // Create and execute a SELECT SQL statement.
            String selectSql = "SELECT Fname, Lname from dbo.Customers";
            resultSet = statement.executeQuery(selectSql);

            // Print results from select statement
            while (resultSet.next()) {

                result += (resultSet.getString("Fname") + " " + resultSet.getString("Lname")+"\n");
            }
        } catch (SQLException e) {
            e.printStackTrace();
            result = e + "";
        }
        return result;
    }
    }

调用connect方法的主要活动片段:

case R.id.buttonSignOut: { //used to test connection currently, simply attempts to connect and //returns the value to a textview on the page

                Thread thread = new Thread() {

                    public void run() {

                        textviewLowItemAlert.setText(DatabaseJAVA.Connect());

                    }

                };

                thread.start();

                break;

解决此问题的下一步是什么?它适用于 Eclipse,但不适用于工作室。我尝试了十几种不同的连接字符串,其中大多数都抛出了相同的错误。我的服务器是否不允许访问 Android Studio?大多数错误似乎是 Android Studio 无法在服务器上找到它。

【问题讨论】:

  • @JoaquinAlvarez 好的,我尝试了您的连接。我增加了超时时间,并开始了它。这一次,我得到 Network Error IOException, EHOSTUNREACH(No route to host) 我假设网络方面有问题,并且会玩一段时间。
  • @JoaquinAlvarez 路由器将我的 IP 地址从 .218 更改为 .219。我在字符串中更改了它,然后再次尝试。这一次,它说找不到 BlackPC\SQLEXPRESS 的实例。我将它缩短为 SQLEXPRESS,它说 DB 服务器关闭了连接。还在玩这个。

标签: java android sql-server eclipse android-studio


【解决方案1】:

这是我的一个工作应用程序中的一个 sn-p,我可以在其中成功连接到本地 ms sql。

在配置文件中我设置了连接信息。

  public static String dbUser = "user";
  public static String dbPassword = "password";
  public final static String sqlString = "jdbc:jtds:sqlserver://ip:port//INSTANCENAME";

然后我像这样开始连接。

 StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
 StrictMode.setThreadPolicy(policy);
 DriverManager.setLoginTimeout(5);
 connection = DriverManager.getConnection(Config.sqlString, Config.dbUser, Config.dbPassword);       // Connect to database
        if (connection == null) {
            ConnectionResult = "Verify Internet Connection";
            Toast.makeText(activity, ConnectionResult, Toast.LENGTH_LONG).show();

最后只做查询并关闭连接。

【讨论】:

    【解决方案2】:

    好吧,终于可以弄明白了,使用 JoaquinAlvarez 提到的 JDBC-JTDS 连接器。 事情是这样的:

    -使用他提供的连接信息、我的 IP 地址和更高的超时时间

    -网络错误IOException,EHOSTUNREACH(没有到主机的路由),

    -路由器更改了我的 IP 地址,所以必须修复它

    -在那之后,我使用我的 PCNAME\SQLEXPRESS 作为实例

    -它返回Instance Unreachable,所以我单独改为SQLEXPRESS

    -然后它返回 DB Closed connection

    -我查看了 Windows 事件查看器,它说: "连接此服务器需要加密,但客户端库不支持加密;连接已关闭。请升级您的客户端库。"

    -我在 SQL SERVER 配置管理器中检查了 SQL 服务器...强制加密已打开。

    -再次尝试,JTDS连接器终于连接到数据库,我可以做事了。不过,对 MSSQL 没有帮助。 谢谢阿尔瓦雷斯先生!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-21
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 2016-05-06
      相关资源
      最近更新 更多