Android Studio [JDBC]:为什么我无法访问数据库
Android Studio [JDBC]: Why I'm not able to reach the database
我知道之前有一些话题讨论过这个问题,但我尝试了几乎所有的解决方案都没有成功,而且我知道有些人不建议使用 JDBC 来处理 [=25= 中的数据库] 但是为了我的大学项目的目的,我需要使用它。
我有一个由 Hostgator 托管的数据库,我确定我正在使用的信息(主机名、用户和密码),因为我在其他 Java IDE 上尝试过,他们工作完美,所以我的电脑也没有被阻塞。我将 Mysql J 连接器添加到 Android Studio 作为库,尝试了 2 个版本,最新的一个和 3.0.17,但是没有运气,我不知道我做错了什么,因为没有logcat 中出现错误或异常。
这是包含数据库连接的代码:(P.S.I 删除了异常语句以缩短代码)
protected Void doInBackground(Void... params) {
Connection start;
// 试过 localhost 没用
String url = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/abed_impresent";
String username = "abed_bayoun";
String pass = "xxxxx";
Class.forName("com.mysql.jdbc.Driver").newInstance();
start = DriverManager.getConnection(url, username, pass);
Statement my;
if (start != null) {
test = new ArrayList<>();
my = start.createStatement();
ResultSet res = my.executeQuery("select code from Tutors");
while (res.next()) {
test.add(res.getString("code"));
}
for (int c = 0; test.size() > c; c++) {
if (text.getText().equals(test.get(c))) {
Intent i = new Intent(tStart.this, tChoose.class);
startActivity(i);
Toast.makeText(tStart.this, "test", Toast.LENGTH_LONG).show();
break;
} else continue;
}
}
return null;
开始跳过 if 语句下的所有代码,因为应用程序似乎无法连接到数据库。
强烈不建议在 android 上使用 jdbc 驱动程序(据我所知只有一个 jdbc 版本适用于 android)。而不是 jdbc 驱动程序考虑创建 Web 服务,它提供来自数据库的内容。
好吧,我知道我做错了什么,
我将此代码放在单独的 try-catch 语句中
start = DriverManager.getConnection(url, username, pass);
这以某种方式阻止了其他代码获取 start 的值并将其作为空值处理。
我将其余代码包含在同一个 try-catch 语句中,这对我有用。
感谢大家的努力。
我知道之前有一些话题讨论过这个问题,但我尝试了几乎所有的解决方案都没有成功,而且我知道有些人不建议使用 JDBC 来处理 [=25= 中的数据库] 但是为了我的大学项目的目的,我需要使用它。
我有一个由 Hostgator 托管的数据库,我确定我正在使用的信息(主机名、用户和密码),因为我在其他 Java IDE 上尝试过,他们工作完美,所以我的电脑也没有被阻塞。我将 Mysql J 连接器添加到 Android Studio 作为库,尝试了 2 个版本,最新的一个和 3.0.17,但是没有运气,我不知道我做错了什么,因为没有logcat 中出现错误或异常。
这是包含数据库连接的代码:(P.S.I 删除了异常语句以缩短代码)
protected Void doInBackground(Void... params) {
Connection start;
// 试过 localhost 没用
String url = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/abed_impresent";
String username = "abed_bayoun";
String pass = "xxxxx";
Class.forName("com.mysql.jdbc.Driver").newInstance();
start = DriverManager.getConnection(url, username, pass);
Statement my;
if (start != null) {
test = new ArrayList<>();
my = start.createStatement();
ResultSet res = my.executeQuery("select code from Tutors");
while (res.next()) {
test.add(res.getString("code"));
}
for (int c = 0; test.size() > c; c++) {
if (text.getText().equals(test.get(c))) {
Intent i = new Intent(tStart.this, tChoose.class);
startActivity(i);
Toast.makeText(tStart.this, "test", Toast.LENGTH_LONG).show();
break;
} else continue;
}
}
return null;
开始跳过 if 语句下的所有代码,因为应用程序似乎无法连接到数据库。
强烈不建议在 android 上使用 jdbc 驱动程序(据我所知只有一个 jdbc 版本适用于 android)。而不是 jdbc 驱动程序考虑创建 Web 服务,它提供来自数据库的内容。
好吧,我知道我做错了什么,
我将此代码放在单独的 try-catch 语句中
start = DriverManager.getConnection(url, username, pass);
这以某种方式阻止了其他代码获取 start 的值并将其作为空值处理。
我将其余代码包含在同一个 try-catch 语句中,这对我有用。
感谢大家的努力。