android中本地建立数据库,服务器访问本地数据库,将查询结果返回客户端(重要的一条线)

 服务器端  客户端传来的参数通过UserQuery(servlet)获取参数,调用相应的(数据库表中)方法,类通过DBConnection连接数据库进行数据库的访问操作获取操作的结果。

 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类 用来实现客户请求和服务器的响应。

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的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与用户进行交互,获取参数。

 

 


你可能感兴趣的:(数据库,android学习笔记)