2

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

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

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

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

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

4

1 回答 1

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
于 2015-08-13T03:28:27.740 回答