Androidでローカルにデータベースを構築し、サーバがローカルデータベースにアクセスし、クエリー結果をクライアントに返す(重要な線)
7205 ワード
サーバ側クライアントから送信されたパラメータは、UserQuery(servlet)によってパラメータを取得し、対応する(データベーステーブル内の)メソッドを呼び出し、クラスはDBConnection接続データベースによってデータベースのアクセス操作を行い、操作の結果を取得する.
a.DBConectionデータベース接続および添削改ざんの接続文
b.データベース内のテーブルに対して、対応するクラスを構築することができ、このテーブルに対するすべての操作を静的方法でこのクラスに書くことができる.
73.データベースから得られた結果をjsonオブジェクトに変換して解析する
d.servletクラスを確立し、顧客要求とサーバの応答を実現する.
サーブレットはサーバ側のJavaアプリケーションで、プラットフォームやプロトコルとは独立した特性を持ち、動的なWebページを生成することができます.クライアント要求(Webブラウザまたは他のHTTPクライアントプログラム)とサーバ応答(HTTPサーバ上のデータベースまたはアプリケーション)の中間層を担当します.サーブレットは、Webサーバの内部にあるサーバ側のJavaアプリケーションであり、従来のコマンドラインから起動したJavaアプリケーションとは異なり、サーブレットはWebサーバによってロードされ、サーブレットをサポートするJava仮想マシンを含む必要がある.
e.クライアントはHttpAccessアクセスサーバを構築する
f.activityを確立してユーザと対話し、パラメータを取得する.
a.DBConectionデータベース接続および添削改ざんの接続文
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDBConnection {
public Connection conn=null;
public Statement stmt=null;
public ResultSet resultSet=null;
private static Stringdbclassname="com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static Stringdburl="jdbc:sqlserver://172.19.198.40:1433;DatabaseName=userload";
private static String dbuser="sa";
private static String dbpwd="123";
/* */
public static Connection getconnection(){
Connection conn =null;
try{
//
Class.forName(dbclassname);
//
conn=DriverManager.getConnection(dburl,dbuser,dbpwd);
}
catch(Exception ee){
ee.printStackTrace();
}
if(conn!=null){
return conn;
}
return null;
}
/* */
public ResultSet executequery(String sql){
try{
conn=getconnection();
stmt=conn.createStatement();
resultSet=stmt.executeQuery(sql);
}
catch(Exception ex){
System.err.println(ex.getMessage());
}
return resultSet;
}
/* */
public int executeupdate(String sql){
int result=0;
try{
conn=getconnection();
stmt=conn.createStatement();
result=stmt.executeUpdate(sql);
}
catch(SQLException ex){
result=0;
System.out.println(ex.toString());
}
try{
stmt.close();
}
catch(SQLException ex1){
ex1.printStackTrace();
}
return result;
}
/* */
public void close(){
try{
if(resultSet!=null){
resultSet.close();
}
}
catch(Exception e){
e.printStackTrace(System.err);
}
try{
if(stmt!=null){
stmt.close();
}
}
catch(Exception e){
e.printStackTrace(System.err);
}
try{
if(conn!=null){
conn.close();
}
}
catch(Exception e){
e.printStackTrace(System.err);
}
}
}
b.データベース内のテーブルに対して、対応するクラスを構築することができ、このテーブルに対するすべての操作を静的方法でこのクラスに書くことができる.
public class User {
private String userID;
private String userName;
private String password;
public User() {
super();
}
public User(String userID, String userName,String password) {
super();
this.userID = userID;
this.userName = userName;
this.password = password;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public static User getUserByNamePassword(Stringuser_name,String password)throws SQLException{
User user = new User();
//
String sql ="SELECT user_id,user_name, password FROM Table_user WHERE(user_name ='"+user_name+"') and(password='"+password+"')";
DBConnection dbconn = newDBConnection();
ResultSet rs = dbconn.executequery(sql);
if(rs.next()){
user.setUserID(rs.getString("user_id"));
user.setUserName(user_name);
user.setPassword(password);
}
else{user=null;}
return user;
}
}
73.データベースから得られた結果をjsonオブジェクトに変換して解析する
publicstatic JSONObject userToJSON(User user) throwsJSONException,SQLException{
JSONObjectuser_json = new JSONObject();
if((user!=null)&&(user.getUserName()!=null)&&(user.getPassword()!=null)){
user_json.put("user_id",user.getUserID());
user_json.put("user_name",user.getUserName());
user_json.put("password",user.getPassword());
}else{
user_json.put("Err"," !");
}
returnuser_json;
}
d.servletクラスを確立し、顧客要求とサーバの応答を実現する.
サーブレットはサーバ側のJavaアプリケーションで、プラットフォームやプロトコルとは独立した特性を持ち、動的なWebページを生成することができます.クライアント要求(Webブラウザまたは他のHTTPクライアントプログラム)とサーバ応答(HTTPサーバ上のデータベースまたはアプリケーション)の中間層を担当します.サーブレットは、Webサーバの内部にあるサーバ側のJavaアプリケーションであり、従来のコマンドラインから起動したJavaアプリケーションとは異なり、サーブレットはWebサーバによってロードされ、サーブレットをサポートするJava仮想マシンを含む必要がある.
publicstatic JSONObject userToJSON(User user) throwsJSONException,SQLException{
JSONObjectuser_json = new JSONObject();
if((user!=null)&&(user.getUserName()!=null)&&(user.getPassword()!=null)){
user_json.put("user_id",user.getUserID());
user_json.put("user_name",user.getUserName());
user_json.put("password",user.getPassword());
}else{
user_json.put("Err"," !");
}
returnuser_json;
}
e.クライアントはHttpAccessアクセスサーバを構築する
importorg.apache.http.HttpResponse;
importorg.apache.http.HttpStatus;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.client.methods.HttpUriRequest;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.util.EntityUtils;
importorg.json.JSONObject;
importandroid.util.Log;
/**
* Get
*1. HttpGet
*2. HttpClient
*3. Get : HttpClient execute(HttpUriRequest)
*4. , HttpResponse getEntity() HttpEntity
*5. JSON
*
*
*/
publicclassHttpAccess {
private static final String TAG ="HttpAccess";
public static JSONObject Read(String url) {
Log.d(TAG, url);
JSONObject rtnJson = null;
try {
// HttpGet
HttpGet get = new HttpGet(url);
// HttpClient
HttpClient httpClient = newDefaultHttpClient();
// Get
HttpResponse httpResponse =httpClient.execute(get);
//
int statCode =httpResponse.getStatusLine().getStatusCode();
//
if (statCode == HttpStatus.SC_OK){//SC_OK=200
//
String result = EntityUtils.toString(httpResponse.getEntity());
// JSON
rtnJson = new JSONObject(result);
}
}catch(Exception e){
Log.d(TAG, e.toString());
}
Log.d(TAG,"responsejson:"+rtnJson);
return rtnJson;
}
}
f.activityを確立してユーザと対話し、パラメータを取得する.