安卓查询mysql返回手机_Android_03_获取数据库信息并显示在界面上
时间: 2023-12-09 12:07:00 浏览: 49
要在 Android 应用程序中查询 MySQL 数据库并显示结果,您需要执行以下步骤:
1. 在服务器端创建一个 Web 服务,该服务将接收来自 Android 应用程序的查询请求并返回结果。您可以使用 PHP、Node.js 或其他服务器端语言来创建此服务。
2. 在 Android 应用程序中使用 HttpClient 或其他网络库发送查询请求,并在响应中接收结果。
3. 解析响应并将结果显示在 Android 应用程序的用户界面上。
下面是一个简单的示例,说明如何在 Android 应用程序中使用 PHP Web 服务查询 MySQL 数据库并将结果显示在 TextView 中:
1. 服务器端代码(使用 PHP):
```
<?php
// 连接到 MySQL 数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// 接收查询请求
$query = $_GET["query"];
// 查询数据库
$result = mysqli_query($conn, $query);
// 将结果转换为 JSON 格式并输出
$rows = array();
while($r = mysqli_fetch_assoc($result)) {
$rows[] = $r;
}
echo json_encode($rows);
// 关闭数据库连接
mysqli_close($conn);
?>
```
2. Android 应用程序代码:
```
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
private TextView mResultTextView;
private Button mQueryButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mResultTextView = (TextView) findViewById(R.id.result_text_view);
mQueryButton = (Button) findViewById(R.id.query_button);
mQueryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new QueryTask().execute();
}
});
}
private class QueryTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... voids) {
// 构造查询 URL
String url = "http://yourserver.com/query.php?query=SELECT * FROM table_name";
// 发送查询请求并接收响应
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response;
try {
response = client.execute(request);
InputStream inputStream = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
return result.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
// 解析响应并将结果显示在 TextView 中
try {
JSONArray jsonArray = new JSONArray(result);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
stringBuilder.append("id: " + jsonObject.getInt("id") + "\n");
stringBuilder.append("name: " + jsonObject.getString("name") + "\n");
stringBuilder.append("age: " + jsonObject.getInt("age") + "\n\n");
}
mResultTextView.setText(stringBuilder.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
```
请注意,上述代码仅作为示例使用,并且在实际应用程序中可能需要进行更多的错误处理和优化。