Java-bug点滴记录(六)

1.数据库连接

【1】Resultset = statement.executeQuery(sql).

Resultset对象保持一个光标指向其当前的数据行。最初,光标位于第一行之前。

【2】拿到resultSet以后就是为了后期的前端页面显示提供数据。

【3】java中能直接转成json格式的数据类型有:对象或者是map

【4】resultset --》想方法转成对象获取map,resultset就是查询的虚拟表是由有数据和光标组成。通常情况下需要移动光标在通过列获取属性值。

【5】while(resultset.next()){//数据转成map或者对象}


简单获取类的数据:

光标已经指向了具体的行

get类型(index 从1开始/列名)

如果起了别名 我们使用类名

List<Map<String,Object>>获取resultSet查询的虚拟表的数据

public List<Map<String,Object>> parseResultSet(ResultSet resultSet) throws SQLException{
 Map<String,Object> map = new HashMap<>();
 List<Map<String, Object>> list = new ArrayList<>();
 //获取列的信息
 ResultSetMetaData metaData = resultSet.getMetaData();
 int count = metaData.getColumnCount();
 while(resultSet.next()){
     for(int i = 1; i <= count; i++){
         Object object = resultSet.getObject(i);
         String columnName = metaData.getColumnName(i);
         map.put(columnName,object);
     }
     list.add(map);
 }
 return list;
}

【6】ResultSetMetaData metaData = resultSet.getMetaData();//获取类的信息。

metaData.getColumnCount();//检索此ResultSet对象的列的数量,类型和属性。

【7】占位符:

原因:将参数作为sql语句的一部分直接放到sql语句中执行会遭到攻击

直接获取:

Statement statement = connection.createStatement();执行静态sql语句,没有where条件判断的就是静态sql语句。

statement.executeQuery(sql);

name" +"pass+'1 ==1'

间接获取:

//在执行之前 先把sql语句的格式给我

//1.sql语句的值 要写成 ?占位符!

String sql = "select * from account where name=? and password=?";

PreparedStatement statement = connection.prepareStatement(sql);

//2.要给占位符赋值

//参数1. ? 占位符的位置 从左到右 从1开始

statement.setString(1,"name");

statement.setString(1,name);

statement.setString(2,"password");

statement.setString(2,password);

statement.executeQuery();

2.json手动解析注意事项

​			步骤1:导入jar

​							json-lib.jar 没有版本

​			 步骤2:将json字符串转成对应的json数据

​							{}

​							"{}"------->JSONObject jsonobject = new JSONObject(json字符串);

​							 "[]"------>JSONArray jsonArray = new JSONArray(json字符串);

​			步骤3:一层一层的获取

​				jsonobject {}

​							属性:key:value get/opt属性类型(key)

​							对象:key:{}------>get/optJSONObject(key)

​							数组:key:[]------->get/optJSONArray(key)

​				jsonarray {}

​							 对象:[{},{},{}] ---->get/optJSONObject(index)

​							数组:[[{},{}],[{},{}]] get/optJsonArray(index)

​				注意:opt在没有key的时候不会报错!但是效率低下!只有在不确定的字段才使用opt

​				json数据并不是对称的!

​				[{},{}]

​				属性对 key:value

​				属性:key:value get/opt属性类型(key)

​		3.json工具类解析

​       gson ---  fastjson  -- jackjson

’
        思想:把json字符串转成 类的对象! 直接通过属性引用即可! ‘逆向过程‘!

​       如何编写类!

​                    idea -- jsonformat  --> json字符复制进去自动生成!

​                    网页 -- 百度  -- json转成javabean !

​        使用:

​            fastjson: 

​               对象  =  JSON.parseObject{}/Array[](json字符串,类的.class)

​            gson:

​               创建gson对象

​               Gson gson  = new Gson();

​               gson.formObject/array(json字符串,类的.class);

​    4.网络请求+ json解析 完成控制台天气预报

​        //1.封装URL
​        
​        //java.net
​        URL url = new URL(path);

​        //2.获取目标的连接 

​        HttpURLConnection connection = url.opendConnection();

​        //3.判断服务器返回的状态吗是否成功

​        if connection.getresponseCode == 200

​           //4.获取输入流

​              input = connection.getInputstream();

​            //5.转成字节输出流

3.json数据生成

List<map> map 对象 list<对象> ------->json字符串

//jdbc!

查询一个是数据库,返回List<bean>--------->json格式的数据

//jdbc.jar

//json生成包

String jsonarray  = JSONArray.fromObject(list).toString();

String jsonObject = JSONObject.fromObject(list.get(0)).toString();

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值