android mysql代码_[小代码]连接MySQL数据库(android,php,MySQL)

管理MySQL数据库最简单和最便利的方式是PHP脚本。

运行PHP脚本使用HTTP协议和android系统连接。

我们以JSON格式编码数据,因为Android和PHP都有现成的处理JSON函数。

下面示例代码,根据给定的条件从数据库读取数据,转换为JSON数据。

通过HTTP协议传给android,android解析JSON数据。

定义在MySQL有以下表,并有一些数据

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代码将是非常简单的:连接到数据库——运行一个SQL查询,根据设定WHERE语句块得到数据——转换以JSON格式输出

例如我们会有这种功能getAllPeopleBornAfter.php文件:

/* 连接到数据库 */

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

mysql_select_db("PeopleData");

/* $_REQUEST['year']获得Android发送的年值,拼接一个SQL查询语句 */

$q=mysql_query("SELECT * FROM people WHERE birthyear>'".$_REQUEST['year']."'");

while($e=mysql_fetch_assoc($q))

$output[]=$e;

/* 转换以JSON格式输出  */

print(json_encode($output));

mysql_close();

?>

Android部分只是稍微复杂一点:用HttpPost发送年值,获取数据——转换响应字符串——解析JSON数据。

最后使用它。

String result = "";

/* 设定发送的年值 */

ArrayList nameValuePairs = new ArrayList();

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

/* 用HttpPost发送年值 */

try{

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php");//上面php所在URL

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", "联网错误 "+e.toString());

}

/* 转换响应字符串 */

try{

BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);//注意"iso-8859-1"编码不支持中文。

/* 如需支持中文,设定MySQL为UTF8格式,在此也设置UTF8读取 */

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", "转换响应字符串错误 "+e.toString());

}

/* 解析JSON数据 */

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", "解析JSON数据错误 "+e.toString());

} 注意:android4.0以上联网代码只能放在子线程

一.创建一个DataBaseHelper DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 A、 在SQLiteOpenHelper的子类当中,必须要有的构造函数 B、该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDataBase对象的时候onCreate 二、创建一个实体person类并且给字段和封装 三、创建一个业务类对SQL的CRUD操作 1.getWritableDatabase()和getReadableDatabase()的区别 ,两个方法都可以获取一个用于操作数据库的SQLiteDatabase实例 2.execSQL(增,删,改都是这个方法)和close();android内部有缓存可关闭也不关闭也行,查询rawQuery是方法 3.在分页有到Cursor(游标)取游标下一个值cursor.moveToNext(),用游标对象接数据 "select * from person limit ?,?" person不能加上where 关键字 4.在删除注意:sb.deleteCharAt(sb.length() - 1); 四、AndroidCRUD业务对SQLite的CRUD操作 1.ContentValues对象的使用 2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要实力化,而且是使用后才有上下文 *一般设置为局部对象 */ 六、AndroidManifest.xml的配置 <!-- 配置用户类库android.test.runner测试 --> package jll.sqlitedb; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * *@author Administrator DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 * 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 * 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 */ public class DataBaseHelper extends SQLiteOpenHelper { // 给一个默认的SQLite的数据库名 private static final String DataBaseName = "SQLite_DB"; private static final int VERSION = 2; // 在SQLiteOpenHelper的子类当中,必须要有的构造函数 public DataBaseHelper(Context context, String name, CursorFacto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值