在不使用webservice的情况下在android中连接外部数据库

时间:2013-02-28 04:53:51

标签: android database connection

我之前也知道这个问题,但我想知道我们是否可以从Android设备连接到外部数据库(例如mySQL)而不使用网络服务

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

  2. 有人可以知道或提供任何相关的参考资料吗?

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

  4. 实际上在我的要求中我使​​用webservice下载和xml,它将具有连接字符串,数据库名称,服务器名称,用户名,密码等所有细节,但连接将在运行时完成。

1 个答案:

答案 0 :(得分:1)

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

试试这个:

  1. 下载MySQL JDBC

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

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

  4. 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