下面是小弟用DOM4J写的一个数据到处功能,已经可以导出数据库数据以及数据结构到XML文档,先欲求一导入方法,请大侠们赐教....联系方式: QQ群:22309797 email: [email protected] [email protected]
/**
* 导出数据库数据以及数据结构到XML文档
* @param conn Connection
* @param dbname String
* @param filePath String
* @param fileName String
* @return
*/
public boolean dBDataToXmlData(Connection conn, String dbname, String filePath, String fileName){
XMLWriter writer = null;
DatabaseMetaData dmd = null;
ResultSet tbrs = null,rs = null;
ResultSetMetaData rmd = null;
PreparedStatement ps = null;
//建立XML文档的根root
try{
if(conn == null){
System.out.println("错误: 没有可用的数据库连接!");
return false;
}
Document document = DocumentHelper.createDocument();//建立document对象
//1---@dbname [ROOT元素代表数据库名---->创建文档dbname元素,dbname元素名即为ROOT元素]
SimpleDateFormat sy1=new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
Element em_dbname = document.addElement("database");
em_dbname.addAttribute("dbname",dbname); //给dbname节点添加一个属性
//加入一行注释
em_dbname.addComment("the xml document file created in "
+sy1.format(new Date())+
" powered by jsf开源组织,QQ交流群:22309797 email:[email protected]");
//2---@dbname/tablename
dmd = conn.getMetaData();
tbrs = dmd.getTables(null,null,null,null); //查找出数据库中所有表的名称,包括系统表和用户表
while(tbrs.next()){//@循环取出数据库中所有表名
String tbname = tbrs.getString("TABLE_NAME");
Element em_tbname = em_dbname.addElement("table");
em_tbname.addAttribute("tbname",tbname);//给tablename节点添加一个属性
String sqlInstruction="SELECT * FROM "+tbname;
ps = conn.prepareStatement(sqlInstruction,
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = ps.executeQuery();
rmd = rs.getMetaData(); //获取元数据,如属性名等
int colcount = rmd.getColumnCount(); //获取属性列的个数
int count = 0;
while(rs.next()){
//3---@dbname/tablename/row
Element em_tbrow = em_tbname.addElement("row");
em_tbrow.addAttribute("rownum",(count+1)+""); //给rownum节点添加一个属性
//4---@dbname/tablename/row/column
for(int i=1;i<=colcount;i++){
Element em_tbcolumn = em_tbrow.addElement("column");
em_tbcolumn.addAttribute("colname",rmd.getColumnName(i).toString()); //给colname节点添加一个属性
String value = rs.getString(i);
if(value == null)
value="";
em_tbcolumn.addText(value);
}
count++;
}
}
OutputFormat format = OutputFormat.createPrettyPrint(); //格式化输出
format.setEncoding("GBK"); //指定XML编码
writer= new XMLWriter(new FileWriter(new File(fileName)),format);
writer.write(document); //将document中的内容写入文件中
return true; //执行成功,需返回1
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
try{
tbrs.close(); tbrs= null;
rs.close(); rs= null;
ps.close(); ps= null;
dmd = null;
rmd = null;
conn.close(); conn= null;
writer.close(); writer= null;
}catch(Exception e){}
}
return false;
}
/**
* 导出数据库数据以及数据结构到XML文档
* @param conn Connection
* @param dbname String
* @param filePath String
* @param fileName String
* @return
*/
public boolean dBDataToXmlData(Connection conn, String dbname, String filePath, String fileName){
XMLWriter writer = null;
DatabaseMetaData dmd = null;
ResultSet tbrs = null,rs = null;
ResultSetMetaData rmd = null;
PreparedStatement ps = null;
//建立XML文档的根root
try{
if(conn == null){
System.out.println("错误: 没有可用的数据库连接!");
return false;
}
Document document = DocumentHelper.createDocument();//建立document对象
//1---@dbname [ROOT元素代表数据库名---->创建文档dbname元素,dbname元素名即为ROOT元素]
SimpleDateFormat sy1=new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
Element em_dbname = document.addElement("database");
em_dbname.addAttribute("dbname",dbname); //给dbname节点添加一个属性
//加入一行注释
em_dbname.addComment("the xml document file created in "
+sy1.format(new Date())+
" powered by jsf开源组织,QQ交流群:22309797 email:[email protected]");
//2---@dbname/tablename
dmd = conn.getMetaData();
tbrs = dmd.getTables(null,null,null,null); //查找出数据库中所有表的名称,包括系统表和用户表
while(tbrs.next()){//@循环取出数据库中所有表名
String tbname = tbrs.getString("TABLE_NAME");
Element em_tbname = em_dbname.addElement("table");
em_tbname.addAttribute("tbname",tbname);//给tablename节点添加一个属性
String sqlInstruction="SELECT * FROM "+tbname;
ps = conn.prepareStatement(sqlInstruction,
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = ps.executeQuery();
rmd = rs.getMetaData(); //获取元数据,如属性名等
int colcount = rmd.getColumnCount(); //获取属性列的个数
int count = 0;
while(rs.next()){
//3---@dbname/tablename/row
Element em_tbrow = em_tbname.addElement("row");
em_tbrow.addAttribute("rownum",(count+1)+""); //给rownum节点添加一个属性
//4---@dbname/tablename/row/column
for(int i=1;i<=colcount;i++){
Element em_tbcolumn = em_tbrow.addElement("column");
em_tbcolumn.addAttribute("colname",rmd.getColumnName(i).toString()); //给colname节点添加一个属性
String value = rs.getString(i);
if(value == null)
value="";
em_tbcolumn.addText(value);
}
count++;
}
}
OutputFormat format = OutputFormat.createPrettyPrint(); //格式化输出
format.setEncoding("GBK"); //指定XML编码
writer= new XMLWriter(new FileWriter(new File(fileName)),format);
writer.write(document); //将document中的内容写入文件中
return true; //执行成功,需返回1
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
try{
tbrs.close(); tbrs= null;
rs.close(); rs= null;
ps.close(); ps= null;
dmd = null;
rmd = null;
conn.close(); conn= null;
writer.close(); writer= null;
}catch(Exception e){}
}
return false;
}
我上写从网上搜索了一些东西保存为XML,
结果再导入到数据库失败了.