2016-11-21 回答
用android程序去直连mysql数据库,觉得这样做不好,出于安全等方面考虑。数据库地址,用户名密码,查询sql什么的都存在程序里,很容易被反编译等方法看到。
建议把表示层和数据层逻辑分开,数据层对应网页的表示层提供接口,同时在为android手机端提供一个接口,简介访问数据库,这接口可以2端都保持一致,比如xml+rpc或者json等等,android端也有现成的东西能直接用,既安全又省事。
android 链接mysql数据库实例:
package com.hl;
import java.sql.drivermanager;
import java.sql.resultset;
import com.mysql.jdbc.connection;
import com.mysql.jdbc.statement;
import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.textview;
public class androidmsql extends activity {
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
button btn=(button)findviewbyid(r.id.btn);
btn.setonclicklistener(new onclicklistener() {
@override
public void onclick(view v) {
sqlcon();
}
});
}
private void msettext(string str){
textview txt=(textview)findviewbyid(r.id.txt);
txt.settext(str);
}
private void sqlcon(){
try {
class.forname("com.mysql.jdbc.driver");
} catch (exception e) {
e.printstacktrace();
}
try {
string url ="jdbc:mysql://192.168.142.128:3306/mysql?user=zzfeihua&password=12345&useunicode=true&characterencoding=utf-8";//链接数据库语句
connection conn= (connection) drivermanager.getconnection(url); //链接数据库
statement stmt=(statement) conn.createstatement(resultset.type_scroll_sensitive,resultset.concur_updatable);
string sql="select * from user";//查询user表语句
resultset rs=stmt.executequery(sql);//执行查询
stringbuilder str=new stringbuilder();
while(rs.next()){
str.append(rs.getstring(1)+"\n");
}
msettext(str.tostring());
rs.close();