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();