gpt4 book ai didi

android - 使用 Android 连接到远程 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 05:41:21 25 4
gpt4 key购买 nike

我在服务器中有一个 MySQL 数据库。我想知道如何连接到我的远程数据库并将数据显示到我的 android 应用程序中。

我知道这是一种使用 WebService 或直接的方式,但我不知道更多。

我有一个用 Php 编写的脚本,它位于允许连接到数据库的服务器中

$db = mysql_connect("localhost", "UserName", "Password") or die (mysql_error());  
mysql_select_db("NameofDB",$db) or die (mysql_error());

感谢您的帮助!!!

最佳答案

Android 应用端:

private ArrayList<String> receiveData(String file, ArrayList<NameValuePair> data)
{
InputStream is = null;
ArrayList<String> output = new ArrayList<String>();
String line = null;

//Connect and obtain data via HTTP.
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.blah.com/"+file);
httppost.setEntity(new UrlEncodedFormEntity(data));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();

}
catch(Exception e)
{
Log.e("log_tag", "Error in http connection "+e.toString());
}

//Parse data into ArrayList and return.
try
{
BufferedReader reader =
new BufferedReader(new InputStreamReader(is,"iso-8859-1"));

while ((line = reader.readLine()) != null)
{
//Parse data into tokens and removing unimportant tokens.
StringTokenizer st = new StringTokenizer(line, delims, false);

while(st.hasMoreTokens())
{
String token = st.nextToken();
output.add(token);
}
}

is.close();
//Log output of data in LogCat.
Log.d("DATA","DATA:"+output);

}
catch(Exception e)
{
Log.e("log_tag", "Error converting result "+e.toString());
}
return output;
}

/**
* Gets all data from GetAllData.php
* @return output - ArrayList containing data.
*/
public ArrayList<String> getAllData(String row)
{
fileName = "GetAllData.php";

//Add arguments to arrayList<NameValuePairs> so we can encode the data and send it on.
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("row", row));

ArrayList<String> output = this.receiveData(fileName, nameValuePairs);
return output;
}

服务器端:

那么服务器上的 GetAllData.php 文件是:

<?php
/*
* What this file does is it:
* 1) Creates connection to database.
* 2) Gets data from database.
* 3) Encodes data to JSON. So this data can then be used by Android Application.
* 4) Close database connection.
*/
require_once $_SERVER['DOCUMENT_ROOT'].'/Clarity/Connection.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/Clarity/ReceiveAPI.php';

$server = new Connection();
$receive = new ReceiveAPI();

//Retrieve information.
$row = $_POST['row'];

//Connect to database.
$server->connectDB();
$output = $receive->getAllData($row); //basically method to query database.
print(json_encode($output)); //output is result of the query given back to app.

//Disconnect from database.
$server->disconnectDB();
?>

这是我最近使用的一个例子。只需在 php 文件中注明即可。我导入 Connection.php这只是处理与数据库的连接。因此,只需将其替换为连接到 MYSQL 数据库的代码即可。我还导入了 SendAPI.php(你可以忽略它)这只是我发送数据的类。基本上它包含了一些我想使用的查询。比如sendAccelerationData()。类基本上类似于存储过程。

我连接到数据库的方式在我的 Connection.php 类中。

//Connect to a database.
public function connectDB()
{
//Connect to SQL server.
$this->connection = mysql_connect($this->hostName,$this->user,$this->password);

if (!$this->connection)
{
die('Could not connect: ' . mysql_error());
}
//Print("Connected to MySQL. </br>");

//Select Database to query.
$db_selected = mysql_select_db($this->database);
if (!$db_selected)
{
die('Could not select database' . mysql_error());
}
//Print("Database \"$this->database\" selected. </br>");
}

//Disconnect from database.
public function disconnectDB()
{
mysql_close($this->connection);
}
}

注意在错误消息中我打印出了数据库的模式,例如数据库名称/表名称。这只是故障排除。我建议不要这样做。您不想向用户显示该信息。

关于android - 使用 Android 连接到远程 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com