【问题标题】:Android : Is JDBC supported in Android devices?Android:Android 设备是否支持 JDBC?
【发布时间】:2013-03-23 06:46:21
【问题描述】:

我正在做一个使用 JDBC 将数据发送到数据库而不使用任何 Web 服务的 Android 应用程序。我使用 Android 2.2 模拟器做了一个实验,我能够将数据发送到 MySQL DB (LOCALHOST)。之后我尝试使用 Android 2.2 设备发送,我更改了路径 jdbc:mysql://10.0.2.2:3306/jdbc:mysql://xx.xx.xx.xx:3306/

xx.xx.xx.xx 来自我的本地主机的ipconfig。但它在设备中不起作用。可能是什么原因。

主要疑惑:

  1. Android 设备目前是否支持 JDBC?
  2. Android 2.2 会支持 JDBC 吗?
  3. 如果支持,哪些 Android 版本将支持 JDBC?

【问题讨论】:

  • 看!您提到的任何疑问都不是您的问题的原因,请参阅我的回答。

标签: android mysql jdbc phpmyadmin


【解决方案1】:

是的。你一定记得把你的JDBC连接代码放在AsyncTask中, 否则你会BURN BURN BURN!

【讨论】:

  • 另外,不要将“INTERNET”权限误认为“使用 INTERNET”权限。您需要后者来执行 JDBC。
【解决方案2】:

Android 设备是否支持 JDBC。

Android 2.2 会支持 JDBC。

如果支持,哪些 Android 版本将支持 JDBC。

NO android不支持本地MYSQL数据库所以我们不能使用JDBC连接frmo android设备,它只支持 sqlite数据库。

如果你想从服务器使用你的数据库,那么只需为它创建一个网络服务,然后从服务器处理所有数据库连接。

但是它可以帮助您了解 JDBC 和 android 太可怕了! SO Question

【讨论】:

  • 我需要使用远程 MySQL 数据库。我不想进行任何网络服务调用。
【解决方案3】:

听起来您的 Mysql 安装只允许来自本地主机的连接。更新您的 Mysql 配置以允许来自任何主机的连接。

据我所知,从 API 级别 1 开始支持 java.sql,我认为该支持很快就会被删除。

/托马斯

【讨论】:

    【解决方案4】:

    下载 MySQL JDBC Connector 3.0.17并将其添加到您的android项目构建路径中。

    import java.sql.Connection;
    
    
    
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.Statement;
    import android.app.Activity;
    

    导入android.os.Bundle; 导入android.widget.TextView;

    public class MysqlSample01Activity extends Activity {
    
    private static final String url = "jdbc:mysql://<server>:<port>/<database>";
    private static final String user = "<username>";
    private static final String pass = "<password>";
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        testDB();
    }
    
    public void testDB() {
        TextView tv = (TextView)this.findViewById(R.id.text_view);
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(url, user, pass);
            /* System.out.println("Database connection success"); */
    
            String result = "Database connection success\n";
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from table_name");
            ResultSetMetaData rsmd = rs.getMetaData();
    
            while(rs.next()) {
                result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
                result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
                result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n";
            }
            tv.setText(result);
        }
        catch(Exception e) {
            e.printStackTrace();
            tv.setText(e.toString());
        }   
    
    }
    

    }

    【讨论】:

    • 我已经添加了 JAR 文件,并且和你的例子一样。但是从设备上它不起作用。我如何在设备中给出路径。
    • 也许你的 IP 被你的防火墙阻止了你必须在防火墙设置中添加例外,如果你使用路由器,你必须端口转发
    • 如果我使用这种代码,是否意味着有人可以反编译我的应用程序并找出 ip、端口、dbname、用户和密码?
    【解决方案5】:

    是的,您可以在 android 中使用 JDBC 连接到数据库。 只需将此行添加到您的 gradle 依赖项:

     compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.44'
    

    别忘了根据需要更改版本。

    添加后,gradle sync 将处理所有事情,您只需像在简单的 java jdbc 程序中一样连接到 DB。

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 2011-03-10
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 2013-11-29
      • 2015-09-24
      相关资源
      最近更新 更多