您的位置:首页 > 数据库 > Oracle

oracle数据库中插入char类型的数据为何后面总多出一个空格?

2017-02-09 16:34 381 查看
package com.yunwei.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import org.apache.log4j.Logger;

import com.yunwei.main.HttpRequest;

import com.yunwei.util.DBConnection;

import com.yunwei.util.LoggerUtil;

import com.yunwei.util.ResultSetToList;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class RtBusPlandepartDao {//2、 车辆当日计划发车信息
public static Logger logger = LoggerUtil.getLoggerByName();
static Connection conn = null;
static PreparedStatement ps = null;
static ResultSet rs = null;
static String SQL = "";
static String qujian = "1";
static String quancheng = "0";
String lineid = "";//线路名称
java.sql.Timestamp ts2 =new java.sql.Timestamp(System.currentTimeMillis());//采集时间
public void RtBusPlandepart()  {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(new Date());
String sr = HttpRequest
.sendPost(
"http://172.100.1.73:5012/api/getVehicleDeparture.ashx",
"appid=mqapi&uid=yamq&pwd=67A872E9120B99BB3CF08E9A4A09004B&lineid=007109&date="+time);
JSONObject resultJson = null;
resultJson = JSONObject.fromObject(sr);
String lineid = "007109";
getRtBusPlandepart(resultJson,lineid);

String sr1 = HttpRequest
.sendPost(
"http://172.100.1.73:5012/api/getVehicleDeparture.ashx",
"appid=mqapi&uid=yamq&pwd=67A872E9120B99BB3CF08E9A4A09004B&lineid=007108&date="+time);
JSONObject resultJson1 = null;
resultJson1 = JSONObject.fromObject(sr1);
String lineid1 = "007108";
getRtBusPlandepart(resultJson1,lineid1);

}

private int getRtBusPlandepart(JSONObject resultJson,String lineids){
int y = 0;
logger.info("车辆当日计划发车信息:RtBusPlandepart");
logger.info("开始时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date()));
try {
conn = DBConnection.getConnection();
conn.setAutoCommit(false);
JSONObject result = resultJson.getJSONObject("result");

if("1".equals(result.getString("code"))){

JSONObject jsonObject = result.getJSONObject("data");

lineid = jsonObject.getString("roadline");
String dateTime = jsonObject.getString("date");
Long time1 = new SimpleDateFormat("yyyy-MM-dd").parse(dateTime).getTime();
ts2 = new java.sql.Timestamp(time1);

JSONArray list = jsonObject.getJSONArray("list");
JSONArray updatelist = new JSONArray();
JSONArray insertlist = new JSONArray();
//查询所有数据作比较,来决定是更新还是插入
SQL ="SELECT VEH_ID,LICENSE_PLATE,DATA_TIME,INSERT_TIME,SIGNPOST,DEPART_TIME,DEPART_STATION,SHIFT_TYPE,LINE_ID,TYPE FROM RT_BUS_PLANDEPART ";
ps = conn.prepareStatement(SQL);
ResultSet rrs = ps.executeQuery();
//库里的数据放进一个map里来作比较
@SuppressWarnings("unchecked")
List<Map<String,String>> rrsList=ResultSetToList.convertList(rrs);
Map<String,Object>  map22 = new HashMap<String,Object>();
for (int i = 0; i < rrsList.size(); i++) {
Map<String,String> m = rrsList.get(i);
getLicenseDepartTimeMap(m,map22);
}
//批量插入历史表
SQL = "INSERT INTO HIST_BUS_PLANDEPART(VEH_ID,LICENSE_PLATE,DATA_TIME,INSERT_TIME,SIGNPOST,DEPART_TIME,DEPART_STATION,SHIFT_TYPE,LINE_ID,TYPE) VALUES(?,?,?,?,?,?,?,?,?,?)";
ps = conn.prepareStatement(SQL);

for (int j = 0; j < list.size(); j++) {
String vehId = list.getJSONObject(j).getString("vehicleid");
String licensePlate = list.getJSONObject(j).getString("vehicleno");
java.sql.Timestamp ts= new java.sql.Timestamp(System.currentTimeMillis());
String signpost = list.getJSONObject(j).getString("lupai");
String departTime = list.getJSONObject(j).getString("starttime");
String dapartStation = list.getJSONObject(j).getString(
"startstation");
String shiftType = list.getJSONObject(j).getString("type");
if(licensePlate==null||"".equals(licensePlate)){
continue;
}
String a =(licensePlate+departTime).replace(" ", "");
if(map22.containsKey(a)){
updatelist.add(list.getJSONObject(j)); 
}else{
insertlist.add(list.getJSONObject(j));
}

//批量插入历史表

ps.setString(1, vehId);
ps.setString(2, licensePlate);
ps.setTimestamp(3, ts2);
ps.setTimestamp(4, ts);
ps.setString(5, signpost);
ps.setString(6, departTime);
ps.setString(7, dapartStation);
ps.setString(8, shiftType);
ps.setString(9, lineid);
if("007108".equals(lineids)){
ps.setString(10, qujian);
}else if("007109".equals(lineids)){
ps.setString(10, quancheng);
}
ps.addBatch();
if(j%1000==0){
ps.executeBatch();
conn.commit();
}

}
ps.executeBatch();
conn.commit();
//插入实时库
getRtBusPlandepartInsert(insertlist,lineids);
//更新实时库
getRtBusPlandepartUpdate(updatelist,lineids);
}

} catch (Exception e) {
logger.error(e);

}finally {
DBConnection.closeResultSet(rs);
       DBConnection.closePreparedStatement(ps);
       DBConnection.closeConnection(conn);
       logger.info("结束时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date()));
}

return y;
}

public void getLicenseDepartTimeMap(Map<String,String> m,Map<String,Object>  map22){
Iterator iter =m.keySet().iterator();
String license="";
String departTime="";
while(iter.hasNext()){
String key =(String) iter.next();
if(key!=null||!"".equals(key)){
if("LICENSE_PLATE".equals(key)){
license = m.get(key);
}else if("DEPART_TIME".equals(key)){
departTime =m.get(key);
}
if(license!=""&&departTime!=""){
String a = (license+departTime).replace(" ","");
map22.put(a, m);
break;
}

}

}
}

private void getRtBusPlandepartInsert(JSONArray insertlist,String lineids){
//插入
try {
if(insertlist.size()>0){
SQL = "INSERT INTO RT_BUS_PLANDEPART(VEH_ID,LICENSE_PLATE,DATA_TIME,INSERT_TIME,SIGNPOST,DEPART_TIME,DEPART_STATION,SHIFT_TYPE,LINE_ID,TYPE) VALUES(?,?,?,?,?,?,?,?,?,?)";
ps = conn.prepareStatement(SQL);
for (int k = 0; k < insertlist.size(); k++) {
String vehId = insertlist.getJSONObject(k).getString("vehicleid");
String licensePlate = insertlist.getJSONObject(k).getString("vehicleno");
java.sql.Timestamp ts= new java.sql.Timestamp(System.currentTimeMillis());
String signpost = insertlist.getJSONObject(k).getString("lupai");
String departTime = insertlist.getJSONObject(k).getString("starttime");
String dapartStation = insertlist.getJSONObject(k).getString(
"startstation");
String shiftType = insertlist.getJSONObject(k).getString("type");

ps.setString(1, vehId);
ps.setString(2, licensePlate);
ps.setTimestamp(3, ts2);
ps.setTimestamp(4, ts);
ps.setString(5, signpost);
ps.setString(6, departTime);
ps.setString(7, dapartStation);
ps.setString(8, shiftType);
ps.setString(9, lineid);
if("007108".equals(lineids)){
ps.setString(10, qujian);
}else if("007109".equals(lineids)){
ps.setString(10, quancheng);
}
ps.addBatch();
if(k%1000==0){
ps.executeBatch();
conn.commit();
}

}
ps.executeBatch();
conn.commit();
}
} catch (Exception e) {
logger.error(e);
}
};

private void getRtBusPlandepartUpdate(JSONArray updatelist,String lineids){
//更新
try {
if(updatelist.size()>0){
SQL  = "UPDATE RT_BUS_PLANDEPART SET VEH_ID=?,DATA_TIME=?,INSERT_TIME=?,SIGNPOST=?,DEPART_STATION=?,SHIFT_TYPE=?,LINE_ID=?,TYPE=? where trim(LICENSE_PLATE)=? and trim(DEPART_TIME) =? ";
ps = conn.prepareStatement(SQL);
for (int k = 0; k < updatelist.size(); k++) {
String vehId = updatelist.getJSONObject(k).getString("vehicleid");
String licensePlate = updatelist.getJSONObject(k).getString("vehicleno").replace(" ", "");
java.sql.Timestamp ts= new java.sql.Timestamp(System.currentTimeMillis());
String signpost = updatelist.getJSONObject(k).getString("lupai");
String departTime = updatelist.getJSONObject(k).getString("starttime").replace(" ", "");
String dapartStation = updatelist.getJSONObject(k).getString(
"startstation");
String shiftType = updatelist.getJSONObject(k).getString("type");

ps.setString(1, vehId);//车牌号
ps.setTimestamp(2, ts2);
ps.setTimestamp(3, ts);
ps.setString(4, signpost);
ps.setString(5, dapartStation);
ps.setString(6, shiftType);
ps.setString(7, lineid);
if("007108".equals(lineids)){
ps.setString(8, qujian);
}else if("007109".equals(lineids)){
ps.setString(8, quancheng);
}
ps.setString(9, licensePlate);
ps.setString(10, departTime);
ps.addBatch();
if(k%1000==0){
ps.executeBatch();
conn.commit();
}
}
ps.executeBatch();
conn.commit();
}
} catch (Exception e) {
logger.error(e);
}
};

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: