2

几天以来,我一直面临一个问题。我创建了一个带有按钮的 android 应用程序。单击按钮时,它应该从 sql server 获取数据。我已经为连接字符串提供了我的 IP,即 192.168.xx,这个应用程序在模拟器上成功运行。但是当我从三星 Galaxy 手机运行应用程序时,并没有连接到 sql server。这个问题已经发布了很多次,我对此做了很多研究,但找不到正确的答案。我对连接字符串感到困惑。我应该使用 10.0.2.2 还是 127.0.1.1 还是我的静态 IP。提前感谢您的帮助。我会很感激我得到的答复。请帮帮我!!!

4

4 回答 4

0

添加import android.util.Log;到代码的顶部,并将 catch 语句中的行从e1.getMessage();更改为Log.e("DBDebug", e1.getMessage());

然后在连接 USB 电缆的情况下再次在手机上运行此代码。如果您将 ADT 与 eclipse 一起使用,请在 logcat 窗口中添加一个标记过滤器作为“DBDebug”。这将显示您的应用程序的所有调试消息,并将捕获任何错误消息。查看一下,看看 jdbc 是否报告了任何错误。

或者,如果您使用控制台中的 android 工具,则命令为adb logcat -s "DBDebug"

可以使用 USB 数据线在 Android 设备和 PC 之间创建网络,但这比通过将手机连接到 WiFi 来使用已经工作的现有网络要复杂得多。

在运行 SQL 服务器的计算机上,打开命令窗口/控制台并键入“ipconfig”。你会看到类似的东西。读取 IPv4 地址的行是您的 android 应用程序将用于连接到 SQL 服务器的 IP 地址。

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::e4f4:7f27:bb97:ac87%10
   IPv4 Address. . . . . . . . . . . : 192.168.0.7
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.0.1

您还需要确保没有防火墙阻止通过网络连接到 SQL 服务器。

根据您的 SQL 服务器的设置方式,它可能只允许从本地主机访问,而不是通过网络访问。确保您已在 SQL Server 中配置了一个用户,并且没有尝试以 root 用户身份进行连接。出于安全原因,默认 SQL 用户通常只允许本地主机连接。我相信这可能是您的问题,您需要创建一个能够通过网络访问服务器的用户。

如果您使用的是 MySQL,则语法将类似于以下内容:

CREATE USER 'david'@'192.168.0.0/255.255.255.0';

例如,如果您的网络在 192.168.1.xxx 范围内,您可以更改上面的行以反映这一点。

于 2013-08-28T13:24:24.557 回答
0

这是我正在使用的代码。我有一个数据库 SysTestNew。我正在从表中导入各方并将它们添加到我的 sqlite 数据库中。我在我的按钮上调用 importdata()。这在模拟器中运行良好,但在我的三星手机上运行良好。

String userName = "xxxxxx";
String password = "xxxxx";
String url = "jdbc:jtds:sqlserver://192.168.x.x:1433/SysTestNEW";
Connection conn;
String ACCODE, ACC_DESC, Address, Phone, Mobile, Area_Code, AREA_DESC,
        ItemCode, ItemDesc, itemgroup_code, ITEMSUBGRP, unit, SaleRate,
        getsalesmanname, getareaval, getgrpval;
DatabaseOperations db = new DatabaseOperations(this);
Button btnback, btnimport, btnimportitem;
Spinner spinareaname, spinitemname;
CheckBox chkareaall, chkitemall;


public void importdata() {

    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        conn = DriverManager.getConnection(url, userName, password);
        Toast.makeText(getApplicationContext(), "Connection open",
                Toast.LENGTH_LONG).show();
        Statement stmt = conn.createStatement();
        ResultSet reset;

        if (!chkareaall.isChecked()) {
            getareaval = spinareaname.getSelectedItem().toString();
            reset = stmt
                    .executeQuery("select am.ACCODE,am.ACC_DESC,cm.Address,cm.Phone,cm.Mobile,cm.Area_Code,ar.AREA_DESC from ACCMASTER am left join Custmaster cm on am.ACCODE=cm.Accode left join AREA ar on cm.Area_Code = ar.AREA_CODE where am.GROUP_ID='DR' and ar.AREA_DESC='"
                            + getareaval + "'");
        } else {
            reset = stmt
                    .executeQuery("select am.ACCODE,am.ACC_DESC,cm.Address,cm.Phone,cm.Mobile,cm.Area_Code,ar.AREA_DESC from ACCMASTER am left join Custmaster cm on am.ACCODE=cm.Accode left join AREA ar on cm.Area_Code = ar.AREA_CODE where am.GROUP_ID='DR'");
        }

        if (reset != null) {
            while (reset.next()) {
                ACCODE = reset.getString(1);
                ACC_DESC = reset.getString(2);
                Address = reset.getString(3);
                Phone = reset.getString(4);
                Mobile = reset.getString(5);
                Area_Code = reset.getString(6);
                AREA_DESC = reset.getString(7);
                db.insertCustomer(ACCODE, ACC_DESC, Address, Phone, Mobile,
                        Area_Code, AREA_DESC);
            }
            alertdialogbox("Import Parties",
                    "Parties Imported Successfully !!");
        }

        conn.close();
    } catch (Exception e1) {
        e1.getMessage();
    }
}
于 2013-08-29T05:03:30.053 回答
0

根据您的手机 USB 连接用于: - 与计算机共享手机连接 - 在手机和计算机之间传输一些信息...但是要连接到您的 sql 服务器(托管在计算机中),您必须拥有两台设备的计算机和同一网络上的电话

您正在做的是尝试通过 192.168.xx 通过 wifi 网络连接

检查您的网络属性以查看您的计算机在 USB 电话计算机网络中而不是在 wifi 网络中的 ip 是什么

于 2013-08-28T13:17:09.247 回答
0

我的手机有一个设置为“USB Tethering”。我在某处读到,当您想通过 wifi 将手机与 PC 连接时使用此设置。我启用了此设置,然后运行我的应用程序但没有结果...此设置或任何其他设置是否在将我的手机连接到 pc 的 wifi 时起作用?

于 2013-08-29T05:14:32.523 回答