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()吧,比較把握。

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