setString()与setObject()

做数据库插入的时候setString()和setObject()是有区别的,如果是Oracle做JDBC插入还好,如果是informix数据库就会出现乱码问题,因为setObject()有转码的过程。我之前做个一个下行短信功能需要把一条数据插入到对方的informix数据库中,所有汉字就出现乱码以下是具体例子:

boolean off=ifModelMessageClosed(model_no,company);
		if(off){
			log.info("短信开关关闭!");
		}else{
			log.info("saveMessage:保存数据到flex_se_tm表中");
			 Connection conn = getConnection();
			 if(conn!=null){
				 StringBuffer sql = new StringBuffer();
				 sql.append("insert into flex_se_tm ");
				 sql.append("(id,sendid,userid,phonecode,sendtime,sendtext,status,flag,usefullife,autoread,inceptback,gwid,selectTag,smstype,serviceid,repeatcount,sendlevel,company)");
				 sql.append("values");
				 sql.append("(?,?,?,?,?,?,'0','0','1','0','0',?,'0',?,'1001',0,2,?)"); 
				 PreparedStatement pstmt = null;
				 try {
					 pstmt= conn.prepareStatement(sql.toString());//想数据库中插入第一组数据
					 String time = df.format(new Date());
					 String idvalue = "TM"+time+getRandom(6);
					 pstmt.setString(1,idvalue);//主键
					 pstmt.setString(2,"");//发送序列号
					 pstmt.setString(3,"");//发送人工号或姓名
					 pstmt.setString(4,phone);//接受短信手机号码
					 pstmt.setString(5,(String) time.subSequence(0, 14));//发送时间      
					log.info(messageContent);
					 pstmt.setString(6,messageContent);//短信内容
					 pstmt.setString(7,"");//短信网关返回ID
					 pstmt.setString(8,"T01");//短信类型
					 pstmt.setString(9,company);//机构代码
					 pstmt.execute();
					
					 
					 /*记录短信日志*/
					 log.info("开始记录短信日志到PICC_MESSAGE_LOG表中");
					 PiccMessageLogInfo  piccMessageLogInfo = new PiccMessageLogInfo();
					 piccMessageLogInfo.setContents(messageContent);
					 piccMessageLogInfo.setMemOrg(company);
					 piccMessageLogInfo.setPhoneNo(phone);
					 piccMessageLogInfo.setSendBy("1_1");
					 piccMessageLogInfo.setSendFlag("1");
					 piccMessageLogInfo.setSendTime(new Date());
					 piccMessageLogInfo.setSendType("1");
					 this.baseDAO.save(piccMessageLogInfo);
				} catch (SQLException e) {
					e.printStackTrace();
				}finally{
					JdbcUtil.close(null, pstmt, conn);
				}
			 }else{
				 log.error("saveMessage:connection is null ");
			 }
			
		}

建议以后统一用setString()吧,比较把握。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章