【问题标题】:Android Studio [JDBC]: Why I'm not able to reach the databaseAndroid Studio [JDBC]:为什么我无法访问数据库
【发布时间】:2015-03-09 17:05:29
【问题描述】:

我知道之前有一些话题讨论过这个问题,但我尝试了几乎所有的解决方案都没有运气,我知道有些人不建议使用 JDBC 来处理 android 中的 DB,但对于我的大学项目而言我需要使用它。

我有一个由 Hostgator 托管的数据库,我确信我正在使用的信息(主机名、用户和密码),因为我在其他 Java IDE 上尝试过它们并且它们运行良好,所以我的电脑没有被阻止任何一个。我将 Mysql J 连接器作为库添加到 Android Studio,尝试了 2 个最新版本和 3.0.17,但没有运气,我不知道我做错了什么,因为 logcat 中没有出现错误或异常。

这是包含与 DB 的连接的代码:(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 语句下的所有代码都开始跳过,因为应用似乎无法连接到 DB。

【问题讨论】:

  • 发布堆栈跟踪以及异常的相关详细信息。
  • 没有错误或异常,程序工作但没有连接到数据库
  • 但不连接数据库 如果应用程序无法连接到数据库,则会引发异常。看起来您没有记录异常,因此您无法检查如何解决问题。请记录异常,复制堆栈跟踪并编辑您的帖子,否则我们无法为您提供帮助。
  • 我正在使用 e.printstacktrace();但我在 logcat 中找不到任何异常
  • 你在哪个部分使用它?因为如果没有抛出异常,则意味着您可以毫无问题地连接和使用数据库。

标签: java android mysql jdbc android-studio


【解决方案1】:

强烈不建议在android上使用jdbc驱动程序(据我所知,只有一个jdbc版本适用于android)。而不是 jdbc 驱动程序考虑创建从您的数据库提供内容的 Web 服务。

【讨论】:

    【解决方案2】:

    好吧,我知道我做错了什么,

    我把这段代码放在单独的 try-catch 语句中

    start = DriverManager.getConnection(url, username, pass);
    

    这以某种方式阻止了其他代码获取 start 的值并将其作为空值处理。

    我将其余代码包含在同一个 try-catch 语句中,这对我有用。

    感谢大家的努力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2014-08-02
      • 2020-02-12
      • 1970-01-01
      • 2015-01-11
      • 2014-04-06
      相关资源
      最近更新 更多