从数据库取数据返回json格式

从数据库取数据返回json格式

1.做一个dao层,放回conn,提供所有人调用.

1.1配置context.xml

<Context>

<Resource name="jdbc/mysql" auth="Container"

         type="javax.sql.DataSource"

         maxActive="100"

         maxIdle="30"   

         maxWait="10000"

         username="root"

         password="123456"

         driverClassName="com.mysql.jdbc.Driver"

         url="jdbc:mysql://localhost:3306/book?autoReconnect=true"/>

</Context>

 

1.2做一个Dao层

package dao;

 

import java.sql.Connection;

import javax.naming.InitialContext;

import javax.sql.DataSource;

 

 

publicclass MysqlDriver {

   

    privatestatic Connection conn = null;

    publicstatic Connection getConn(){

        try{

            //通过这个类访问Tomcat配置文件Context.xml中指定的JNDI数据源

            InitialContext ctx = new InitialContext();

            //使用lookup()方法查找匹配的JNDI名字,获得数据源

            DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");

            //从数据源中获得数据库连接

            conn = ds.getConnection();

        }catch(Exception ex){

            ex.printStackTrace();

        }

        returnconn;

    }

   

}

 

接下里就可以到jsp中用改下名方法得到conn了

<%

Connection conn=MysqlDriver.getConn();

%>

2.做一个类,用来转换resultset到json格式

package json;

 

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.ResultSetMetaData;

 

 

import net.sf.json.JSONArray;

import net.sf.json.JSONException;

import net.sf.json.JSONObject;

 

publicclass UseJson {

   

    publicstatic String resultSetToJson(ResultSet rs) throws SQLException,JSONException 

   

       // json数组 

       JSONArray array = new JSONArray(); 

       

       // 获取列数 

       ResultSetMetaData metaData=rs.getMetaData(); 

       intcolumnCount = metaData.getColumnCount(); 

       

       // 遍历ResultSet中的每条数据 

        while (rs.next()) { 

            JSONObject jsonObj = new JSONObject(); 

             

            // 遍历每一列 

            for (inti = 1; i <= columnCount; i++) { 

            System.out.println(metaData.getColumnTypeName(i));

            String type=metaData.getColumnTypeName(i);

                String columnName =metaData.getColumnLabel(i); 

//              String value = rs.getString(columnName); 

//              jsonObj.put(columnName, value);

           

            if(type=="INT")

            {

                 jsonObj.put(columnName, rs.getInt(i));

                }elseif(type=="DECIMAL") {

                  jsonObj.put(columnName, rs.getShort(i));

                }else{

                  jsonObj.put(columnName, rs.getString(i));// 此处如果调用rs.getObject方法会返回一个Integer[DB2]

                }

            }  

            array.add(jsonObj);

        } 

       

       returnarray.toString(); 

    }

}

 

 

我查了百度,说net.sf.json只需要json-lib这个jar包,所以我想把其余的删掉.

3.新建一个jsp文档

在里面写上下面的代码,就可以直接打印这个json了.

<%

Connection conn=MysqlDriver.getConn();

PreparedStatement ps;

String jsonStr="";

String sql="select * from datas";

ps=conn.prepareStatement(sql);

ResultSet rs=ps.executeQuery();

jsonStr=UseJson.resultSetToJson(rs);

out.println(jsonStr);

conn.close();

%>

2018年4月27日15:06:36


  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值