扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
数据库很多,但是安卓直接支持的数据库只有sqlite一种。如果要使用其它的非本地数据库,你得建立连接,采用webservice或http协议中转数据。
平昌网站建设公司创新互联公司,平昌网站设计制作,有大型网站制作公司丰富经验。已为平昌千余家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的平昌做网站的公司定做!
安卓访问mysql里的数据得:
1)先建立网络,使用WIFI局域网
2)在PC建立数据访问接口,编写http协议应用(方法非常多。 asp、php、jsp都有访问mysql的方法),还得关掉防火墙
3)编写安卓手机客户端连接设备的http service
PHP是一种创建动态交互性站点的服务器端脚本语言,优势:PHP脚本语言应用广泛,开源免费,最重要的是入门简单,容易掌握。PHP能够生成动态页面内容PHP能够创建、打开、读取、写入、删除以及关闭服务器上的文件PHP能够接收表单数据PHP能够发送并取回cookiesPHP能够添加、删除、修改数据库中的数据PHP能够限制用户访问网站中的某些页面能够运行于各种平台,几乎兼容所有WEB服务器,支持多种数据库1.我们想要运行PHP,首先要有个web服务器,一般可以在本地部署一个服务器用来测试。所以需要下载个XAMPP,我们在百度搜索apache friends,直接打开第一个链接,然后毫不犹豫的下载最新版本(PHP7.0.9),下载后执行安装。2.2.现在来配置XAMPP来部署一个本地服务器,打开只需要启用Apache服务,下面我就启动成功了。如果启用不成功,Port(s)没有数据显示,就证明你监听的PC端口被占用,你可以在Config的里第一个选项进行监听端口的更改,找到记事本里的Listen 8080命令改后缀,这里我把监听端口改成空闲的8080了。3.下面来打开Dreamweaver建一个服务器站点。站点配置:本地站点文件夹一定要选择你装Xampp路径的htdocs的目录里。4.添加服务器配置:这样站点就设置好了,然后在站点文件夹创建server.php,脚本如下?php //设置页面内容是html编码格式是utf-8 //header("Content-Type: text/plain;charset=utf-8"); header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Methods:POST,GET'); header('Access-Control-Allow-Credentials:true'); header("Content-Type: application/json;charset=utf-8"); //header("Content-Type: text/xml;charset=utf-8"); //header("Content-Type: text/html;charset=utf-8"); //header("Content-Type: application/javascript;charset=utf-8"); //定义一个多维数组,包含员工的信息,每条员工信息为一个数组 $staff = array ( array("name" = "乔布斯", "number" = "101", "sex" = "男", "job" = "IOS开发工程师"), array("name" = "比尔盖茨", "number" = "102", "sex" = "男", "job" = "微软开发工程师"), array("name" = "陈美丽", "number" = "103", "sex" = "女", "job" = "安卓开发工程师"), array("name" = "黄力", "number" = "104", "sex" = "男", "job" = "Java开发工程师"), array("name" = "车神", "number" = "105", "sex" = "男", "job" = "游戏开发工程师"), array("name" = "测试猫", "number" = "106", "sex" = "男", "job" = "web前端开发工程师") ); //判断如果是get请求,则进行搜索;如果是POST请求,则进行新建 //$_SERVER是一个超全局变量,在一个脚本的全部作用域中都可用,不用使用global关键字 //$_SERVER["REQUEST_METHOD"]返回访问页面使用的请求方法 if ($_SERVER["REQUEST_METHOD"] == "GET") { search(); } elseif ($_SERVER["REQUEST_METHOD"] == "POST"){ create(); } //通过员工编号搜索员工 function search(){ //检查是否有员工编号的参数 //isset检测变量是否设置;empty判断值为否为空 //超全局变量 $_GET 和 $_POST 用于收集表单数据 if (!isset($_GET["number"]) empty($_GET["number"])) { echo '{"success":false,"msg":"参数错误"}'; return; } //函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。 //global 关键词用于访问函数内的全局变量 global $staff; //获取number参数 $number = $_GET["number"]; $result = '{"success":false,"msg":"没有找到员工。"}'; //遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果 foreach ($staff as $value) { if ($value["number"] == $number) { $result = '{"success":true,"msg":"找到员工:员工编号:' . $value["number"] . ',员工姓名:' . $value["name"] . ',员工性别:' . $value["sex"] . ',员工职位:' . $value["job"] . '"}'; break; } } echo $result; } //创建员工 function create(){ //判断信息是否填写完全 if (!isset($_POST["name"]) empty($_POST["name"]) !isset($_POST["number"]) empty($_POST["number"]) !isset($_POST["sex"]) empty($_POST["sex"]) !isset($_POST["job"]) empty($_POST["job"])) { echo '{"success":false,"msg":"参数错误,员工信息填写不全"}'; return; } //TODO: 获取POST表单数据并保存到数据库 //提示保存成功 echo '{"success":true,"msg":"员工:' . $_POST["name"] . ' 信息保存成功!"}'; } ? 我们可以在server.php文件数组$staff里的数据进行查询,并且可以实现添加数据的功能,下面来创建demo.htmlstyle body,input,button,select,h1{ font-size:20px; line-height:18px; } /style script window.onload=function(){ document.getElementById("search").onclick=function(){//查询数据 //发送Ajax查询请求并处理 var request=new XMLHttpRequest(); //open("方法(GET查询,POST添加)","打开的文件数据",处理方式(同步为false异步为true,不填默认为true)); request.open("GET","server.php?number="+document.getElementById('keyword').value); request.send(); request.onreadystatechange=function(){ if(request.readyState===4){//当服务器请求完成 if(request.status===200){//status==200为服务器请求成功 var data=JSON.parse(request.responseText); if(data.success){//数据填写符合要求 document.getElementById('searchResult').innerHTML=data.msg; }else{//数据填写不符号要求 document.getElementById('searchResult').innerHTML="出现错误:"+data.msg; } }else{//服务器请求失败 alert("发生错误:"+request.status); } } } } document.getElementById("save").onclick=function(){//添加数据 //发送Ajax添加数据请求并处理 var request=new XMLHttpRequest(); //open("方法(GET查询,POST添加)","打开的文件数据",处理方式(同步为false异步为true,不填默认为true));; request.open("POST","server.php"); //定义data取得用户所填写的数据,并且send(data)到服务器 var data="name="+document.getElementById("staffName").value +"number="+document.getElementById("staffNumber").value +"sex="+document.getElementById("staffSex").value +"job="+document.getElementById("staffJob").value; request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//在POST方法里必写,否则添加数据不起作用 request.send(data); request.onreadystatechange=function(){ if(request.readyState===4){//当服务器请求完成 if(request.status===200){//status==200为服务器请求成功 var data=JSON.parse(request.responseText); if(data.success){//数据填写符合要求 document.getElementById('createResult').innerHTML=data.msg; }else{//数据填写不符合要求 document.getElementById('createResult').innerHTML="出现错误:"+data.msg; } }else{//服务器请求失败 alert("发生错误:"+request.status); } } } } } /script body h1员工查询/h1 label请输入员工编号:/label input type="text" id="keyword"/ button id="search"查询/button p id="searchResult"/p h1员工创建/h1 label请输入员工姓名:/label input type="text" id="staffName"/br label请输入员工编号:/label input type="text" id="staffNumber"/br label请输入员工性别:/label select id="staffSex" option男/option option女/option /selectbr label请输入员工职位:/label input type="text" id="staffJob"/br button id="save"保存/button p id="createResult"/p /body 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
Android客户端直接连接远程MySQL数据库的方法如下:String result = ""; //首先使用NameValuePair封装将要查询的年数和关键字绑定 ArrayListNameValuePair nameValuePairs = new ArrayListNameValuePair(); nameValuePairs/getAllPeopleBornAfter.php"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error in http connection "+e.toString()); } //将HttpEntity转化为String try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close();result=sb.toString(); }catch(Exception e){ Log.e("log_tag", "Error converting result "+e.toString()); }//将String通过JSONArray解析成最终结果 try{ JSONArray jArray = new JSONArray(result); for(int i=0;ijArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); Log.i("log_tag","id: "+json_data.getInt("id")+ ", name: "+json_data.getString("name")+ ", sex: "+json_data.getInt("sex")+ ", birthyear: "+json_data.getInt("birthyear") ); } } }catch(JSONException e){ Log.e("log_tag", "Error parsing data "+e.toString()); }虽然Android开发中可以直接连接数据库,但是实际中却不建议这么做,应该使用服务器端中转下完成。
1. 通过 MySQL在windows下的配置 中介绍第二种方法,在服务器机器上配置php和mysql环境,譬如我的服务器机器ip为:10.141.249.1362. 新建在test数据库下新建一个teacher表,表的内容如下:
3. 在服务器机器上的phpnow安装目录E:\PHPnow-1.5.5\htdocs下新建一个test.php文件,文件内容如下:
?php
$link=mysql_connect("127.0.0.1","root","123456");
mysql_query("SET NAMES utf8");
mysql_select_db("test",$link);
$sql=mysql_query("select * from teacher ",$link);
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?
4. 新建一个Android Java Project
需要修改的是一下三个文件:AndroidTestActivity.java、main.xml、AndroidManifest.xml
//AndroidTestActivity.java
package
com.knight.android.test;//根据实际的工程需要,修改包的名称
import
java.io.BufferedReader;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.util.ArrayList;
import
org.apache.http.HttpEntity;
import
org.apache.http.HttpResponse;
import
org.apache.http.NameValuePair;
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
android.app.Activity;
import
android.net.ParseException;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;
public
class
AndroidTestActivity
extends
Activity {
JSONArray jArray;
String result
= null;
InputStream is
= null;
StringBuilder sb
= null;
@Override
public
void
onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(new
Button.OnClickListener()
{
@Override
public
void
onClick(View v)
{
//
TODO
Auto-generated
method stub
EditText tv = (EditText) findViewById(R.id.editView);
ArrayListNameValuePair nameValuePairs = newArrayListNameValuePair();
//
http get
try
{
HttpClient httpclient = new
DefaultHttpClient();
HttpGet httpget = new
HttpGet(
"");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
is
=
entity.getContent();
} catch
(Exception e)
{
Log.e("log_tag", "Error
in http connection" + e.toString());
}
//
convert response to string
try
{
BufferedReader reader = new
BufferedReader(
new
InputStreamReader(is, "iso-8859-1"), 8);
sb
= new
StringBuilder();
sb.append(reader.readLine()
+ "\n");
String line = "0";
while
((line =
reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result
= sb.toString();
} catch
(Exception e)
{
Log.e("log_tag", "Error
converting result " + e.toString());
}
//
paring data
int
ct_id;
String ct_name;
try
{
jArray
= new
JSONArray(result);
JSONObject json_data = null;
for
(int
i = 0; i
jArray.length(); i++) {
json_data = jArray.getJSONObject(i);
ct_id = json_data.getInt("id");
ct_name = json_data.getString("name");
tv.append(ct_name + "
\n");
}
} catch
(JSONException e1)
{
//
Toast.makeText(getBaseContext(), "No City Found"
//
,Toast.LENGTH_LONG).show();
} catch
(ParseException e1)
{
e1.printStackTrace();
}
}
});
}
}
layout/main.xml
?xml version="1.0" encoding="utf-8"?
LinearLayout
xmlns:android=""
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="click" /
EditText
android:id="@+id/editView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HI "
android:textSize="30dip" /
/LinearLayout
AndroidManifest.xml
?xml version="1.0" encoding="utf-8"?
manifest
xmlns:android=""
package="com.knight.android.test"
android:versionCode="1"
android:versionName="1.0"
application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
activity
android:name=".AndroidTestActivity"
android:label="@string/app_name"
intent-filter
action
android:name="android.intent.action.MAIN" /
category
android:name="android.intent.category.LAUNCHER" /
/intent-filter
/activity
/application
!-- 授权访问网络 --
uses-permission android:name="android.permission.INTERNET"/
/manifest
5. 运行结果如下图:
点击click以后,Android会向服务器发送一个Http
Get请求,服务器从mysql中读取数据后,传送给Android客户端,客户端编码数据包,然后返回如下结果
注意:
(1)AndroidManifest.xml中不能出现uses-sdk android:minSdkVersion="15"
/这种属性,否则Android客户端无法连接到远程服务器
(2)如果在本机搭建mysql和php环境,以上程序(AndroidTestActivity.java)中红色部分应更改为:HttpGet httpget = new
HttpGet();127.0.0.1表示手机的本机ip,因为程序最终是在手机上跑的
(3)如果读者自定义的工程,需要修改一下几个地方:
第一个是 AndroidTestActivity.java
程序里面的package名称package
com.knight.android.test;这个根据读者自己定义的包要做出相应的修改(绿色部分)
第二个是修改 AndroidManifest.xml里面第三行的package=" com.knight.android.test",要保持绿色部分和第一条中的绿色部分相对应
第三点是修改AndroidManifest.xml里面activity下面的 android:name=". AndroidTestActivity",将绿色部分修改为 AndroidTestActivity.java的红色部分(也就是类名)
(4)在MySQL中把编码设置成utf8_unicode_ci,在浏览器中输入:localhost/test.php,如果中文出现乱码,可以把输出的内容复制到,如果在这里能显示正常,则说明实际上是的对的,因为浏览器输出的是json编码
Android
Studio怎么连接mysql数据库,建议使用mysql的客户端查连接,或者使用java程序去连接,mysql安装后就会自动一个客户端,这个就可以连接数据库的。
android
studio是开发android应用的,写不了jsp,如果你要写java
web
jsp这种,建议使用IDEA或者用eclipse
IDE(开发工具)。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流