我正在制作一个用于用户登录的应用程序,执行模拟器时,我可以注册用户,并验证我在数据库中的用户库存,但是当我在手机上执行该应用程序时,它不会连接到我的数据库。
这是我与数据库的连接代码:
public class ConnectionDB extends AppCompatActivity {
Connection connection;
private static String ip = "192.168.1.9"; //"192.168.33.1";
private static String port = "1433";
private static String classs = "net.sourceforge.jtds.jdbc.Driver";
private static String db = "PHOTOGO";
private static String user = "mizrahijulio";
private static String password = "julio1207";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//Connection method
public Connection connectBD(){
connection=null;
try {
//Acces Permition to DB
StrictMode.ThreadPolicy policicy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policicy);
Class.forName(classs).newInstance();
connection= DriverManager.getConnection("jdbc:jtds:sqlserver://"+ip+":"+port+";databaseName="+db+";user="+user+";password="+password+";instance=SQLEXPRESS;");
}catch(SQLException sq){
Toast.makeText(getApplicationContext(),sq.getMessage(),Toast.LENGTH_SHORT).show();
}
catch (ClassNotFoundException cfe){
Toast.makeText(getApplicationContext(),cfe.getMessage(),Toast.LENGTH_SHORT).show();
}
catch (Exception e){
Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
return connection;
}
public Connection CloseConnection() throws SQLException {
try{
if(connection!=null){
connection.close();}
}
catch(SQLException sq){
Toast.makeText(getApplicationContext(),sq.getMessage(),Toast.LENGTH_SHORT).show();
}
return connection;
}
答案 0 :(得分:0)
如果您的数据库是本地数据库,则您的手机和服务器计算机必须连接到同一网络。可能就是问题所在,如果您的电话连接到SIM网络或与服务器计算机网络不同的任何其他网络,而您尝试访问它,则不会。在谈论您的模拟器时,它显然已连接到服务器网络,因此可以正常工作。
尝试一下,可能就是问题所在。
答案 1 :(得分:0)
如果您具有wifi,并且计算机和真实设备(移动设备)已连接到同一wifi,则可以使用NGROK软件工具在真实设备中运行和调试您的应用。
运行ngrok.exe并输入 ngrok http 80 ,它将为您提供一个如下图所示的地址。
只需在您使用IP地址的应用中使用该网址即可。 最好使用。