我之前也知道这个问题,但我想知道我们是否可以从Android设备连接到外部数据库(例如mySQL)而不使用网络服务。
我已经使用webservice构建了应用程序,但现在他们已经要求我们在不使用webservice的情况下进行构建。
有人可以知道或提供任何相关的参考资料吗?
我拥有关于数据库位置的所有必需数据,即服务器名称,数据库名称等。
实际上在我的要求中我使用webservice下载和xml,它将具有连接字符串,数据库名称,服务器名称,用户名,密码等所有细节,但连接将在运行时完成。
答案 0 :(得分:1)
是的,您可以直接连接到远程数据库。我不确定它的安全性。
试试这个:
在Android项目中添加.jar文件并将其添加为库。
创建一个扩展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