Android远程连接MYSQL

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android远程连接 MYSQL

Android虽然自带java.sql包,但是各数据库的JDBC Driver是否可用争议很多,不论国内网站还是国外网站,有人说能用,有人说不行,有人说虚拟机上能跑,上真手机就不行,有人说自己在手机上测试过也能跑。

但不管怎么说,直接连接远程数据库被公认不是一个很好的做法,至少在安全性上非常差的,所以现在最简单也是最流行的做法是访问远程服务器前段的PHP,PHP函数完成数据库操作,把结果经过JSON编码后传回,Android端再parse出结果。

SQL数据库创建测试表people 代码如下:

CREATE TABLE `people` (

`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`name` VARCHAR( 100 ) NOT NULL ,

`sex` BOOL NOT NULL DEFAULT '1',

`birthyear` INT NOT NULL

)

PHP前端文件getAllPeopleBornAfter.php代码如下,查询出生年月在year之后的人:

mysql_connect("host","username","password");

mysql_select_db("PeopleData");

$q=mysql_query("SELECT * FROM people WHERE

birthyear>'".$_REQUEST['year']."'");

while($e=mysql_fetch_assoc($q))

$output[]=$e;

print(json_encode($output));

mysql_close();

?>

Android客户端的方法略微复杂一点,代码如下:

String result = "";

//首先使用NameValuePair封装将要查询的年数和关键字绑定

ArrayList nameValuePairs = new

ArrayList();

nameValuePairs.add(new BasicNameValuePair("year","1980"));

//使用HttpPost封装整个SQL语句

//使用HttpClient发送HttpPost对象

try{

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new

HttpPost("http://localhost/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;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());

}

相关文档
最新文档