Android笔记 使用Json从数据库读取数据+demo
1搭建数据库 如图 使用的是MySQL,SqlServer应该类似 复制代码时注意一些细节:比如MySQL的用户名和密码 本地的ip 要改成自己的
源代码http://download.csdn.net/detail/u011109881/8041209
2搭建web端
先导入如下jar包
a.Bean
package com.jdbc;import java.util.Date;public class User {private int id;private String name;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", password=" + password+ "]";}}
b.数据库连接工具类
package com.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class DBUtil {static String driver = "com.mysql.jdbc.Driver";static String url = "jdbc:mysql://localhost:3306/android";static String user = "root";static String password = "admin";public static Connection getConnection() {Connection conn = null;try {Class.forName(driver);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {conn = DriverManager.getConnection(url,user, password);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}public static void close(PreparedStatement preparedStatement,Connection connection) {if (preparedStatement != null) {try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (connection != null) {try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void close(PreparedStatement preparedStatement,Connection connection,ResultSet resultSet) {if (preparedStatement != null) {try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (connection != null) {try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}
c.DAO
package com.jdbc;import java.util.List;public interface Dao {public abstract void insertUser(User user);public abstract List<User> selectAll();
}
d.数据库操作类(此处仅仅是查看)
package com.jdbc;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class SelectAll implements Dao {@Overridepublic void insertUser(User user) {// TODO Auto-generated method stub}@Overridepublic List<User> selectAll() {// TODO Auto-generated method stubConnection connection = DBUtil.getConnection();String sql = "select * from consumer";ResultSet resultSet = null;PreparedStatement preparedStatement = null;List<User> list = new ArrayList<>();try {preparedStatement = connection.prepareStatement(sql);resultSet = preparedStatement.executeQuery();while (resultSet.next()) {User myuser = new User();myuser.setId(resultSet.getInt(1));myuser.setName(resultSet.getString(2));myuser.setPassword(resultSet.getString(3));list.add(myuser);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DBUtil.close(preparedStatement, connection, resultSet);return list;}}
e.重点 JSON解析类(Servlet)将服务器端数据
先将User集合转成JSON格式的数据,然后JSON格式的数据转成字符串以流的形式发送出去
package com.register;import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.Response;import net.sf.json.JSONObject;import com.jdbc.InsertUser;
import com.jdbc.SelectAll;
import com.jdbc.User;public class Register extends HttpServlet {List<User> list;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {SelectAll selectAll = new SelectAll();list = selectAll.selectAll();//从数据库查询数据,结果是List<User>类型JSONObject jsonObject=new JSONObject();//把List<User>类型转化为JSON类型:JSON序列化//jsonObject.put(key, value);jsonObject.put("list", list);//设置服务器端编码resp.setCharacterEncoding("utf-8");//把JSON格式写到服务端流中//jsonObject.toString():先转换为字符串PrintWriter printWriter = resp.getWriter();printWriter.write(jsonObject.toString());// TODO Auto-generated method stub/*PrintWriter pWriter = resp.getWriter();pWriter.write(resp.getCharacterEncoding());String username = req.getParameter("username");String password = req.getParameter("password");System.out.println("------" + username + "," + password + "--------");if (username == null || password == null || username.equals("")|| password.equals("")) {return;}username = new String(username.getBytes("iso-8859-1"),"utf-8");password = new String(password.getBytes("iso-8859-1"),"utf-8");username = URLDecoder.decode(username, "utf-8");password = URLDecoder.decode(password, "utf-8");System.out.println("------" + username + "," + password + "--------");User user = new User();user.setName(username);user.setPassword(password);InsertUser insertUser = new InsertUser();insertUser.insertUser(user);*/}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {/*PrintWriter pWriter = resp.getWriter();pWriter.write("hello");*/doGet(req, resp);}
}
右键运行该Servlet 会看到服务器将显示如下数据
3搭建Android客户端
a布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" ><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:text="开始JSON解析"/><ListViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/lv" /></LinearLayout>
b主界面
package com.example.jsontest;import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;import org.json.JSONArray;
import org.json.JSONObject;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;class User {private int id;private String name;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", password=" + password+ "]";}}public class MainActivity extends Activity {ListView listView;List<String> list = new ArrayList<String>();Handler handler = new Handler(){public void handleMessage(Message msg) {switch (msg.what) {case 1:listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_expandable_list_item_1, list));break;default:break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.lv);}public void click(View view) {new Thread() {public void run() {Log.e("hua", "enter run");try {URL url = new URL("http://10.10.5.31:8080/register/register");Log.e("hua", "url is " + url.toString());HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();//httpURLConnection.connect();int code = httpURLConnection.getResponseCode();if (code == 200) {InputStream is = httpURLConnection.getInputStream();StringBuffer stringBuffer = new StringBuffer();byte[] buffer = new byte[1024];while (is.read(buffer) != -1) {stringBuffer.append(new String(buffer));}JSONObject object = new JSONObject(stringBuffer.toString());JSONArray array = object.getJSONArray("list");for (int i = 0; i < array.length(); i++) {JSONObject jb = array.getJSONObject(i);int id = jb.getInt("id");String name = jb.getString("name");String password = jb.getString("password");User user = new User();user.setId(id);user.setName(name);user.setPassword(password);Log.e("hua", user.toString());list.add(user.toString());}Message message = new Message();message.what = 1;handler.sendMessage(message);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}};}.start();}
}
测试结果
Android笔记 使用Json从数据库读取数据+demo相关推荐
- php连接数据库返回数据类型,php从数据库读取数据,并以json格式返回数据的方法...
php中,从数据库读取数据,并以json格式返回数据.具体方法如下: 第一步,定义相关变量 $servername = "localhost"; $username = " ...
- javaweb 从数据库读取数据的详细操作
文章目录 前言 一.第一步创建bean包 二.第二步创建dao包 三.创建servlet 四.创建jsp文件,用来取数据并显示 前言 从数据库读取数据的详细操作,用购物车案例作为例子 提示:以下是本篇 ...
- 《Clojure数据分析秘笈》——1.6节从JDBC数据库读取数据
本节书摘来自华章社区<Clojure数据分析秘笈>一书中的第1章,第1.6节从JDBC数据库读取数据,作者(美)Eric Rochester,更多章节内容可以访问云栖社区"华章社 ...
- php lpop 返回null,数据库读取数据返回 null 怎么办?
laravel 5.5, win10+Homestead环境, 项目有两个数据库,一个项目自己的,在Homestead里面,一个外部数据库,在我物理机上.现在我需要从外部数据库读取数据. 业务逻辑是这 ...
- python pandas 读取数据库_数据分析-pandas从数据库读取数据
数据分析-pandas从数据库读取数据 使用pandas读取数据到DataFrame,对于只是数据分析来说,重点是读取数据,读取数据过程越简单越好,并不需要写得很复杂显得自己很厉害的样子.最好就是代码 ...
- mysql数据库读取数据,教你如何从 MySQL 数据库读取数据
从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据: SELECT column_name(s) FROM table_name 我们可以使用 * 号来读取所有数据表中的字段: ...
- R语言可以直接从数据库读取数据么?R语言读取数据库数据示例
R语言可以直接从数据库读取数据么?R语言读取数据库数据示例 目录 R语言可以直接从数据库读取数据么?R语言读取数据库数据示例 R语言是解决什么问题的? R语言可以直接从数据库读取数据么?R语言读取数据 ...
- Android中,Sqlite数据库读取数据为空的问题
公司使用的触摸屏出现了一个奇怪的问题,在app中读取数据,只是简单的select * from table 也查询不到数据. [问题描述] 后来发现是有两个module单例分别连接数据库,一个modu ...
- jmeter从数据库读取数据作为参数传递给接口
最近工作中开始接触使用jmeter,对于这样jmeter本人算是小白一枚了,下面记录些jmeter笔记(注:同时参考了其他大神的博客),方便自己查询,也希望能帮助到大家,写的不好大家勿怪哈!!! (注 ...
最新文章
- 特斯拉首次达成连续4季度盈利:车卖的少了,钱却挣得多了
- Python 发送邮件 和 发送带附件邮件
- 数据结构之线性表:顺序线性表 Java 实现(底层基于数组)
- Maven学习(五)————依赖的特性辨析
- 解决ssh空闲一段时间后自动断开
- php漏洞黑掉数据库,WDCPnbsp;add_user.php任意数据库添加任意用户漏洞分析
- 12. vim 编辑器
- Java中多态详解(参考刘意教程)
- Proteus中ADC0808的使用注意事项
- Vue阿里云物流API
- 测试工程师面试题整理
- DiskGenius屏蔽硬盘坏道方法
- 英文歌的计算机普,好听的英文歌:See You Again--DJ Frank ECharlie Puth
- Spring ClassPathResource详解
- 测试删除hive表时出错
- 云币网及KYC【区块链生存训练】
- 2023年推荐几款开源或免费的web应用防火墙
- uniapp - 微信小程序端引入 Echarts 图表及使用详细教程,简单快速的解决方案(拒绝复杂的过程,附带详细的使用示例保姆级教程)
- jquery选择器找到含有href属性的所有a标签
- 基因编辑技术:能让人类永生下去?