我几天来一直面临着一个问题。我创建了一个带有按钮的Android应用程序。单击按钮时,它应从sql server获取数据。我给了我的IP连接字符串,即192.168.x.x,这个应用程序在模拟器上成功运行。但是,当我从三星Galaxy手机运行应用程序是没有连接到SQL服务器。这个问题已经发布了很多次,我已经做了很多研究,但找不到合适的答案。我对连接字符串感到困惑。我应该使用10.0.2.2或127.0.1.1或我的静态IP。在此先感谢您的帮助。我会很感激我得到的答复。请帮帮我!!!
答案 0 :(得分:0)
根据您的手机USB连接用于: - 与电脑共享电话连接 - 在手机和电脑之间传输一些信息 ... 但要连接到您的SQL服务器(托管在计算机中),您必须将两台设备计算机和电话放在同一网络上
您正在尝试通过192.168.x.x尝试通过wifi网络进行连接
检查网络属性,看看USB电话计算机网络中的计算机IP是什么,而不是wifi网络
答案 1 :(得分: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 Server的计算机上,打开命令窗口/控制台并键入“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 Server的设置方式,它可能只允许从localhost而不是通过网络进行访问。确保您已在SQL Server中配置了用户,并且未尝试以root用户身份进行连接。出于安全原因,默认SQL用户通常仅允许localhost连接。我相信这可能是您的问题所在,您需要创建一个能够通过网络访问服务器的用户。
如果您使用MySQL,语法将类似于此:
CREATE USER 'david'@'192.168.0.0/255.255.255.0';
例如,如果您的网络位于192.168.1.xxx范围内,您可以更改上面的行以反映该内容。
答案 2 :(得分: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();
}
}
答案 3 :(得分:0)
我的手机设置为“USB Tethering”。我在某处读到了当您想通过wifi将手机与电脑连接时使用此设置。我启用了这个设置,然后运行我的应用程序,但没有结果...这个设置或任何其他设置在将我的手机连接到PC的wifi上起作用吗?