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

编程入门 行业动态 更新时间:2024-10-27 14:29:06
本文介绍了使用Android连接到远程MySQL数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

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

I have a MySQL database sitting in a server. I would like to know how I could connect to my remote DB and show the data into my android app.

我知道这是WebService或Direct的一种方式,但是我不知道那么多.

I know that is a way with WebService or direct but i don't know more then that.

我有一个写在Php中的脚本,它位于服务器中,可以连接到数据库

I have a script write in Php that sitting in the server that letting connect to the db

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

感谢您的帮助!

推荐答案

Android应用端:

Android app side:

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("www.blah/"+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文件为:

so then the GetAllData.php file on server is:

<?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 db的代码即可.我也导入了SendAPI.php(您可以忽略),这只是我发送数据的类.基本上,它包含一些我想使用的查询.如sendAccelerationData().基本上,类类似于存储过程.

This is an example I used recently. Just to note in the php file. I import Connection.php this just deals with the connection to the database. So just replace that with your code for connecting to MYSQL db. Also I imported SendAPI.php (which you can just ignore)This was just my class for sending data. Basically it contained some of the querys I wanted to use. Such as sendAccelerationData(). Basically class was similar to that of stored procedures.

我如何连接数据库是在Connection.php类中.

How I connected to database was in my Connection.php class.

//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); } }

在错误消息中请注意,我已打印出模式db,例如db name/table name.这只是故障排除.我反对这一建议.您不想向用户显示该信息.

Note in error messages I printed out schema out db such as db name/table name. This was just troubleshooting. I advice against this. YOU DO NOT want to display that information to the user.

更多推荐

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

本文发布于:2023-10-18 12:03:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1504179.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:连接到   数据库   Android   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!