解析日期的字符串小部分发生丢失,10000条数据会有300条导不进去,导致我导入数据库出错,代码和XML文件样本如下,读出的日期一小部分会变成"-04-28 10:58:00.0",完整的应该是"2007-04-28 10:58:00.0",我是把这个字符串直接插入数据库的,碰到数据错误就插不进去
public class SAXReader extends DefaultHandler{dbcon connect = new dbcon();
String columnValue = null;
String tableName = null;
String columnName = null;
String sql = "insert into " ;public void startDocument() throws SAXException {
}
public void processingInstruction(String taget, String data) throws SAXException {}public void startElement(String uri, String localName, String qName, Attributes attr) throws SAXException {if("TABLE".equals(qName))
{
for(int i = 0;i<attr.getLength();i++)
{
tableName = attr.getValue(i);
}
sql += tableName + " values(";
}
else
{
columnName = qName;
}
}
public void characters(char[] ch, int start, int length) throws SAXException {
columnValue=new String(ch,start,length).trim();
if("".equals(columnValue))
{
columnValue = "''";
}
else
{
if(!"null".equals(columnValue)&&!"NULL".equals(columnValue)&&columnValue!=null&&!"".equals(columnValue))
{
columnValue = "'"+ columnValue+"'";
}
}
//System.out.println(columnValue);
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if(!"DATA".equals(qName)&&!"TABLE".equals(qName))
{
if(!"LASTUPDATE".equals(columnName))
{
sql += columnValue +",";
}
if("LASTUPDATE".equals(columnName))
{
sql += columnValue;
}
}if("TABLE".equals(qName))
{
sql += ")";
System.out.println(sql);
insert(sql);
sql = "insert into ";
columnName = null;
columnValue = null;
}
}
public void endDocument() throws SAXException {}public int insert(String sql)
{
int i = 0;
if(connect!=null)
{
i = connect.executeUpdate(sql);
}
return i ;
}XML文件样本:
<DATA>
<TABLE tableName="user02">
<USERID>1000000001</USERID>
<BIRTHDAY>null</BIRTHDAY>
<NATIVE>null</NATIVE>
<BIRTHPLACE>null</BIRTHPLACE>
<MARRIED>null</MARRIED>
<NATIONALITY>CN</NATIONALITY>
<USERNATIONAL>null</USERNATIONAL>
<CREATEDATE>2007-02-11 00:00:00.0</CREATEDATE>
<CRTBY>012011</CRTBY>
<MODIFYDATE>null</MODIFYDATE>
<LSTMODBY>null</LSTMODBY>
<CMT>0</CMT>
<CMTUSER>null</CMTUSER>
<CMTDATE>null</CMTDATE>
<APPSTATUS>0</APPSTATUS>
<REMARK>921176</REMARK>
<ISNEW>1</ISNEW>
<LASTUPDATE>2007-04-28 10:58:00.0</LASTUPDATE>
</TABLE>
...
</DATA>
public class SAXReader extends DefaultHandler{dbcon connect = new dbcon();
String columnValue = null;
String tableName = null;
String columnName = null;
String sql = "insert into " ;public void startDocument() throws SAXException {
}
public void processingInstruction(String taget, String data) throws SAXException {}public void startElement(String uri, String localName, String qName, Attributes attr) throws SAXException {if("TABLE".equals(qName))
{
for(int i = 0;i<attr.getLength();i++)
{
tableName = attr.getValue(i);
}
sql += tableName + " values(";
}
else
{
columnName = qName;
}
}
public void characters(char[] ch, int start, int length) throws SAXException {
columnValue=new String(ch,start,length).trim();
if("".equals(columnValue))
{
columnValue = "''";
}
else
{
if(!"null".equals(columnValue)&&!"NULL".equals(columnValue)&&columnValue!=null&&!"".equals(columnValue))
{
columnValue = "'"+ columnValue+"'";
}
}
//System.out.println(columnValue);
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if(!"DATA".equals(qName)&&!"TABLE".equals(qName))
{
if(!"LASTUPDATE".equals(columnName))
{
sql += columnValue +",";
}
if("LASTUPDATE".equals(columnName))
{
sql += columnValue;
}
}if("TABLE".equals(qName))
{
sql += ")";
System.out.println(sql);
insert(sql);
sql = "insert into ";
columnName = null;
columnValue = null;
}
}
public void endDocument() throws SAXException {}public int insert(String sql)
{
int i = 0;
if(connect!=null)
{
i = connect.executeUpdate(sql);
}
return i ;
}XML文件样本:
<DATA>
<TABLE tableName="user02">
<USERID>1000000001</USERID>
<BIRTHDAY>null</BIRTHDAY>
<NATIVE>null</NATIVE>
<BIRTHPLACE>null</BIRTHPLACE>
<MARRIED>null</MARRIED>
<NATIONALITY>CN</NATIONALITY>
<USERNATIONAL>null</USERNATIONAL>
<CREATEDATE>2007-02-11 00:00:00.0</CREATEDATE>
<CRTBY>012011</CRTBY>
<MODIFYDATE>null</MODIFYDATE>
<LSTMODBY>null</LSTMODBY>
<CMT>0</CMT>
<CMTUSER>null</CMTUSER>
<CMTDATE>null</CMTDATE>
<APPSTATUS>0</APPSTATUS>
<REMARK>921176</REMARK>
<ISNEW>1</ISNEW>
<LASTUPDATE>2007-04-28 10:58:00.0</LASTUPDATE>
</TABLE>
...
</DATA>
这个方法返回的columnValue是什么啊?如果就是"-04-28 10:58:00.0"那就没治了.