private Connection conn = null;
private Statement stmt;
private String dbFile = "";
private String tableName = "";
private HashMap xmlFields = new HashMap(); public AccessWriter(String dbFile, String tableName, String xmlFieldFile)
{
this.xmlFields.clear();
this.xmlFields.putAll(XmlReader.getChannelField(xmlFieldFile));
this.dbFile = dbFile;
this.tableName = tableName;
} /*
 * (non-Javadoc)
 * 
 * @see com.hylanda.datadig.nodewrite.INodeWriter#openFile()
 */
public boolean openFile()
{
//String strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="
// + this.dbFile;
String strurl = "jdbc:odbc:movie";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(strurl);
stmt = conn.createStatement();
stmt.execute("delete from " + this.tableName);
}
catch (SQLException e)
{
e.printStackTrace();
try
{
conn.close();
}
catch (SQLException e1)
{
e1.printStackTrace();
}
return false;
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
return false;
}
return true;
} /*
 * (non-Javadoc)
 * 
 * @see com.hylanda.datadig.nodewrite.INodeWriter#closeFile()
 */
public boolean closeFile()
{
try
{
this.stmt.close();
this.conn.close();
}
catch (SQLException e)
{
e.printStackTrace();
return false;
}
return true;
} /*
 * (non-Javadoc)
 * 
 * @see com.hylanda.datadig.nodewrite.INodeWriter#writeNode(java.lang.String)
 */
public boolean writeNode(String nodeText)
{
String strSql = "";
try
{
strSql = this.insertSql(nodeText);
this.stmt.executeUpdate(strSql);
}
catch (SQLException e)
{
System.out.println(strSql);
e.printStackTrace();
} return true;
} private String insertSql(String nodeText)
{
//create sql command
String ret = "";
String fieldsName = "", fieldsValue = "";
Iterator iterator = this.xmlFields.keySet().iterator();
while (iterator.hasNext())
{
String elementName = (String) iterator.next();
if (!this.chkCancelFields(elementName))
{
continue;
}
String elementValue = "";
elementValue = XmlFormat.getXmlElementValue(nodeText, elementName);
elementValue = this.filterCData(elementValue); //insert 语句检测(去掉关键字)
if (elementName.equalsIgnoreCase("from"))
{
elementName = elementName + "_";
}
else if (elementName.equalsIgnoreCase("date"))
{
elementName = elementName + "_";
}
else if (elementName.equalsIgnoreCase("time"))
{
elementName = elementName + "_";
}
else if (elementName.equalsIgnoreCase("text"))
{
elementName = elementName + "_";
}

//去掉elementValue中的非法字符
if (elementValue.indexOf('\'') >= 0)
{
elementValue = elementValue.replaceAll("'","‘");
}

if (fieldsName == "")
{
fieldsName += "INSERT INTO " + this.tableName + " ("
+ elementName;
if (elementName.indexOf("fulltime") < 0)
{
fieldsValue += "VALUES('" + elementValue + "'";
}
else
{
fieldsValue += "VALUES(" + elementValue + "";
}
}
else
{
fieldsName += "," + elementName;
if (elementName.indexOf("fulltime") < 0)
{
fieldsValue += ",'" + elementValue + "'";
}
else
{
fieldsValue += "," + elementValue + "";
}
}
}
fieldsName += ")";
fieldsValue += ")"; ret = fieldsName + " " + fieldsValue; return ret;
}