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相关推荐

  1. php连接数据库返回数据类型,php从数据库读取数据,并以json格式返回数据的方法...

    php中,从数据库读取数据,并以json格式返回数据.具体方法如下: 第一步,定义相关变量 $servername = "localhost"; $username = " ...

  2. javaweb 从数据库读取数据的详细操作

    文章目录 前言 一.第一步创建bean包 二.第二步创建dao包 三.创建servlet 四.创建jsp文件,用来取数据并显示 前言 从数据库读取数据的详细操作,用购物车案例作为例子 提示:以下是本篇 ...

  3. 《Clojure数据分析秘笈》——1.6节从JDBC数据库读取数据

    本节书摘来自华章社区<Clojure数据分析秘笈>一书中的第1章,第1.6节从JDBC数据库读取数据,作者(美)Eric Rochester,更多章节内容可以访问云栖社区"华章社 ...

  4. php lpop 返回null,数据库读取数据返回 null 怎么办?

    laravel 5.5, win10+Homestead环境, 项目有两个数据库,一个项目自己的,在Homestead里面,一个外部数据库,在我物理机上.现在我需要从外部数据库读取数据. 业务逻辑是这 ...

  5. python pandas 读取数据库_数据分析-pandas从数据库读取数据

    数据分析-pandas从数据库读取数据 使用pandas读取数据到DataFrame,对于只是数据分析来说,重点是读取数据,读取数据过程越简单越好,并不需要写得很复杂显得自己很厉害的样子.最好就是代码 ...

  6. mysql数据库读取数据,教你如何从 MySQL 数据库读取数据

    从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据: SELECT column_name(s) FROM table_name 我们可以使用 * 号来读取所有数据表中的字段: ...

  7. R语言可以直接从数据库读取数据么?R语言读取数据库数据示例

    R语言可以直接从数据库读取数据么?R语言读取数据库数据示例 目录 R语言可以直接从数据库读取数据么?R语言读取数据库数据示例 R语言是解决什么问题的? R语言可以直接从数据库读取数据么?R语言读取数据 ...

  8. Android中,Sqlite数据库读取数据为空的问题

    公司使用的触摸屏出现了一个奇怪的问题,在app中读取数据,只是简单的select * from table 也查询不到数据. [问题描述] 后来发现是有两个module单例分别连接数据库,一个modu ...

  9. jmeter从数据库读取数据作为参数传递给接口

    最近工作中开始接触使用jmeter,对于这样jmeter本人算是小白一枚了,下面记录些jmeter笔记(注:同时参考了其他大神的博客),方便自己查询,也希望能帮助到大家,写的不好大家勿怪哈!!! (注 ...

最新文章

  1. 特斯拉首次达成连续4季度盈利:车卖的少了,钱却挣得多了
  2. Python 发送邮件 和 发送带附件邮件
  3. 数据结构之线性表:顺序线性表 Java 实现(底层基于数组)
  4. Maven学习(五)————依赖的特性辨析
  5. 解决ssh空闲一段时间后自动断开
  6. php漏洞黑掉数据库,WDCPnbsp;add_user.php任意数据库添加任意用户漏洞分析
  7. 12. vim 编辑器
  8. Java中多态详解(参考刘意教程)
  9. Proteus中ADC0808的使用注意事项
  10. Vue阿里云物流API
  11. 测试工程师面试题整理
  12. DiskGenius屏蔽硬盘坏道方法
  13. 英文歌的计算机普,好听的英文歌:See You Again--DJ Frank ECharlie Puth
  14. Spring ClassPathResource详解
  15. 测试删除hive表时出错
  16. 云币网及KYC【区块链生存训练】
  17. 2023年推荐几款开源或免费的web应用防火墙
  18. uniapp - 微信小程序端引入 Echarts 图表及使用详细教程,简单快速的解决方案(拒绝复杂的过程,附带详细的使用示例保姆级教程)
  19. jquery选择器找到含有href属性的所有a标签
  20. 基因编辑技术:能让人类永生下去?

热门文章

  1. webstorm 设置js或者html文件自动缩进为4个空格不生效
  2. isdigit()、isalpha()、isalnum() 三个函数的区别和注意点
  3. 报错盲注之exp注入(double数值类型溢出原理详解)
  4. HTML语言字符编码
  5. laravel用crud之index列出产品items
  6. idea没有代码自动提示功能和包自动引入不了问题
  7. HTML中文网页乱码问题
  8. 读后感《习惯的力量》
  9. 柯达新款Wi-Fi数码相机闪亮登场
  10. 数字的补数——力扣476