android中本地建立数据库,服务器访问本地数据库,将查询结果返回客户端(重要的一条线)
来源:互联网 发布:汉诺塔递归算法难么 编辑:程序博客网 时间:2024/06/05 11:58
服务器端 客户端传来的参数通过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中本地建立数据库,服务器访问本地数据库,将查询结果返回客户端(重要的一条线)
- plsql 客户端访问非本地oracle数据库
- 关于android真机访问本地电脑服务器以及访问数据库的那点事
- 怎样将本地SQL数据库导入服务器
- 将服务器的SQL数据库备份或导入到本地
- 将服务器的SQL数据库备份到本地
- 将本地数据库里的表上传至服务器
- android 将网络获取的图片保存到本地的Sqlite数据库中(包括json获取,解析,获取网络图片,创建本地数据库)
- ios 本地数据库访问
- 批量将本地sql导入到服务器mysql数据库中,和将服务器中的sql导出到本地
- 本地数据库的建立和连接
- android访问本地服务器
- 新装本地ORACLE数据库时访问服务器数据库出问题
- Oracle数据库将数据库从服务器导入本地
- Android中模拟器如何访问本地服务器
- Android中模拟器如何访问本地服务器
- Android模拟器中访问本地服务器的方法
- 将服务器上的Oracle数据库导出到本地Oracle数据库的方法
- 软件架构知识点
- windows安装PHP5.4+Apache2.4+Mysql5.5
- 如何卸载.vsix文件安装的Vs插件?
- Blcok中引用对象
- Freemarker常用技巧
- android中本地建立数据库,服务器访问本地数据库,将查询结果返回客户端(重要的一条线)
- Cloud Foundry和PHP结合。
- fragment的用法笔记
- 网络管理员宝典:宽带路由器优化技巧
- 拓扑排序
- Windows Server 2012正式版DC/ADDS安装初体验
- 对称密码体制Vs公钥密码体制
- Java数字转中文大写,数字转英文
- FreeMarker标签 获取list的大小和下标