【问题标题】:Connecting external database in android without using webservice在不使用webservice的情况下在android中连接外部数据库
【发布时间】:2013-02-28 04:53:51
【问题描述】:

我知道之前也有人问过这个问题,但我想知道我们是否可以在不使用网络服务的情况下从 android 设备连接到外部数据库(例如 mySQL)

  1. 我已经使用 webservice 构建了应用程序,但现在他们要求我们在不使用 webservice 的情况下构建它。

  2. 任何人都可以知道或提供任何参考吗?

  3. 我拥有有关数据库位置的所有必需数据,即服务器名称、数据库名称等。

实际上,在我的要求中,我正在使用 web 服务下载和 xml,该服务将包含连接字符串、数据库名称、服务器名称、用户名、密码等所有详细信息,但连接将在运行时完成。

【问题讨论】:

  • 是的,你可以。不,你不应该。这样做没有任何好处,尤其是因为您已经构建了 Web 服务。然而,存在明显的缺点,例如需要额外的安全性和加密。如果“他们”对此不够信任,我会从这里开始:dev.mysql.com/usingmysql/java
  • 你可以使用 sqlite。在后台从 Web 服务下载数据。并使用本地数据库。因为你不能直接(没有网络服务)mySql DB 与 android 设备连接。
  • @DhavalSodhaParmar,当然可以。这并不容易。 (而且不应该这样做)
  • @323go : 你想说有可能吗?如何?用代码给出建议。
  • 是的..我知道,但要求是构建应用程序,我需要向他们展示..下载到 SQLite db 并工作或使用 web 服务等方法已经完成跨度>

标签: android database connection


【解决方案1】:

是的,您可以直接连接到远程数据库。不过我不确定它的安全性。

试试这个:

  1. 下载MySQL JDBC

  2. 在您的 Android 项目中添加 .jar 文件并将其添加为库。

  3. 创建一个扩展 AsyncTask 的类并在那里执行该方法。

public class connectToServer extends AsyncTask<String, String, String>{

    @Override
    protected String doInBackground(String... args) {

        try {
            connect();
        } catch (Exception e) {
            Log.e("Error", e.toString());
        }
        return null;
    }

    @Override
    protected void onPostExecute(String file_url)
    {

    }
}

public void connect(){
    Log.e("Android", "SQL Connection start");

    Connection conn = null;

    try
    {
        Class.forName("com.mysql.jdbc.Driver").newInstance();

        String ip = "[your host server]";
        String dbName = "[your dbName]";
        String user = "[your userName]";
        String password = "[your password]";

        String connString = "jdbc:mysql://" + ip + "/" + dbName +
        "";

        conn = DriverManager.getConnection(connString, user, password);

        Log.e("Connection", "Open");
        Statement statement = conn.createStatement();
        ResultSet set = statement.executeQuery("Select * from [table]");
        statement.setQueryTimeout(0);

        while(set.next())
        {
            Log.e("Data:", set.getString("[column_name]"));
        }
    }catch(Exception e)
    {
        Log.e("Error connection", e.toString());
    }

}//end method

【讨论】:

    猜你喜欢
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多