Android Studio [JDBC]:为啥我无法访问数据库

Posted

技术标签:

【中文标题】Android Studio [JDBC]:为啥我无法访问数据库【英文标题】: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 中找不到任何异常 你在哪个部分使用它?因为如果没有抛出异常,则意味着您可以毫无问题地连接和使用数据库。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

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

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

感谢大家的努力。

【讨论】:

以上是关于Android Studio [JDBC]:为啥我无法访问数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 Android Studio 中找不到 JDBC 类

Android Studio Oracle JDBC,结果集一直为空

Android Studio ClassNotFoundException: com.mysql.jdbc.Driver 添加模块后

如何将 Mysql JDBC 驱动程序导入到 android studio

如何将 Mysql JDBC 驱动程序添加到 android studio

在 android studio 中使用 JDBC 登录级别