`

dom4j/javaDB

    博客分类:
  • xml
 
阅读更多

Dom4jTest.java

package com.test.dom4j;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jTest {

	// 读取xml文件
	public static void readXML(Element rootElement) {
		// 输入根元素节点名称
		System.out.println(rootElement.getName());
		for (Iterator i = rootElement.elementIterator(); i.hasNext();) {
			Element element = (Element) i.next();
			// 输入根元素下所有子节点名称
			System.out.println(element.getName());

			for (Iterator j = element.attributeIterator(); j.hasNext();) {
				Attribute attribute = (Attribute) j.next();
				// 输入根元素下每个子节点的属性名称及属性值
				System.out.println(attribute.getName() + "=" + attribute.getValue());
			}
		}
	}

	// 递归读取xml文件
	public static void recurseReadXML(Element element) {
		for (int i = 0, size = element.nodeCount(); i < size; i++) {
			Node node = element.node(i);
			if (node instanceof Element) {
				System.out.print(node.getName() + "[");
				for (Iterator j = ((Element) node).attributeIterator(); j.hasNext();) {
					Attribute attribute = (Attribute) j.next();
					// 输入根元素下每个子节点的属性名称及属性值
					System.out.print(attribute.getName() + "=\"" + attribute.getValue() + "\" ");
				}
				System.out.println("]");
				recurseReadXML((Element) node);
			}
		}
	}

	// 创建XML文件
	public static void createXML() {
		Document document = DocumentHelper.createDocument();
		Element peoples = document.addElement("peoples");
		Element people1 = peoples.addElement("people").addAttribute("id", "001")
				.addAttribute("email", "zhangsan@126.com");
		people1.addElement("name").addText("张三");
		people1.addElement("sex").addText("男");
		Element people2 = peoples.addElement("people").addAttribute("id", "002")
				.addAttribute("email", "lisi@126.com");
		people2.addElement("name").addText("李四");
		people2.addElement("sex").addText("女");
		try {
			OutputFormat format = OutputFormat.createPrettyPrint();
			XMLWriter writer = new XMLWriter(new FileWriter("test.xml"), format);
			format.setEncoding("GBK");// 解决输出中文乱码问题
			// FileOutputStream代替FileWriter也可以解决输出中文乱码问题
			// XMLWriter writer = new XMLWriter(new FileOutputStream("test.xml"), format);
			writer.write(document);
			writer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		try {
			SAXReader reader = new SAXReader();
			Document document = reader.read(new File("d:/test.xml"));
			Element rootElement = document.getRootElement();
			// 读取xml文件
			readXML(rootElement);
			System.out.println("*******************");
			// 递归读取xml文件
			recurseReadXML(rootElement);
			// 创建XML文件
			createXML();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}

 

Java6里的数据库

JDK6除了传统的 binjre 等目录,JDK 6 新增了一个名为 db 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。它只有 2MB 大小,对比动辄上 G 的数据库来说可谓袖珍。但这并不妨碍 Derby 功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于 ASF 强大的社区力量,Derby 得到了包括 IBM Sun 等大公司以及全世界优秀程序员们的支持。这也难怪 Sun 公司会选择其 10.2.2 版本纳入到 JDK 6 中,作为内嵌的数据库。这就好像为 JDK 注入了一股全新的活力:Java 程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。在这一章中,我们将初窥 Java DB 的世界,来探究如何使用它编写出功能丰富的程序。

Hello, Java DB:内嵌模式的 Derby

既然有了内嵌(embedded)的数据库,就让我们从一个简单的范例开始,试着使用它吧。这个程序做了大多数数据库应用都可能会做的操作:在 DBMS 中创建了一个名为 helloDB 的数据库;创建了一张数据表,取名为 hellotable;向表内插入了两条数据;然后,查询数据并将结果打印在控制台上;最后,删除表和数据库,释放资源。

package com.test.dreby;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class HelloJavaDB {
	public static void main(String[] args) {
		try {
			// 加载驱动
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
			Properties props = new Properties();
			props.put("user", "user1");
			props.put("password", "user1");
			// 创建并连接数据库helloDB
			Connection conn = DriverManager.getConnection("jdbc:derby:helloDB;create=true", props);

			conn.setAutoCommit(false);

			Statement stat = conn.createStatement();
			stat.execute("create table hellotable(name varchar(40), score int)");
			stat.execute("insert into hellotable values('Ruth Cao', 86)");
			stat.execute("insert into hellotable values ('Flora Shi', 92)");

			ResultSet rs = stat.executeQuery("select name, score from hellotable order by score");
			while (rs.next()) {
				StringBuilder builder = new StringBuilder(rs.getString(1));
				builder.append("\t");
				builder.append(rs.getInt(2));
				System.out.println(builder.toString());
			}
			//stat.execute("drop table hellotable");
			rs.close();
			stat.close();

			conn.commit();
			conn.setAutoCommit(true);
			conn.close();

			try {
				DriverManager.getConnection("jdbc:derby:;shutdown=true");
			} catch (SQLException e) {
				System.out.println("Database shut down normally");
			}
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}
}

 

DatabaseMetaDataTest.java

package com.test.dreby;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Properties;

public class DatabaseMetaDataTest {

	public static void main(String[] args) {
		try {
			// 加载驱动
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
			Properties props = new Properties();
			props.put("user", "user1");
			props.put("password", "user1");
			// 创建并连接数据库helloDB
			Connection conn = DriverManager.getConnection("jdbc:derby:helloDB;create=false", props);

			DatabaseMetaData dm = conn.getMetaData();
			/*ResultSet rs = dm.getTables(null, null, null, new String[] { "TABLE" });
			while (rs.next()) {
				System.out.println(rs.getString("TABLE_NAME"));
			}*/
			ResultSet rs = dm.getColumns(null, null, "HELLOTABLE", null);
			while (rs.next()) {
				int dataType = rs.getInt("DATA_TYPE");
				String strDataType = "";
				switch(dataType){
				case Types.VARCHAR:
					strDataType = "varchar";
					break;
				case Types.INTEGER:
					strDataType = "int";
					break;
				}
				System.out.println(rs.getString("COLUMN_NAME") + "	" + strDataType);
			}
			rs.close();
			conn.close();
			try {
				DriverManager.getConnection("jdbc:derby:;shutdown=true");
			} catch (SQLException e) {
				System.out.println("Database shut down normally");
			}
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}

}

 

注:通过以上dom4jjavaDB的例子,自己可以编写一个生成数据库表结构的一个XML文件的例子

 

分享到:
评论

相关推荐

    Java学习路线图.pdf

    * 日志基础:掌握 Log4j 1.x & 2.x、LogBack、SLF4J 等日志系统的使用。 阶段八:高级知识 * 数据结构基础:掌握数据结构的基础知识,例如数组、链表、栈、队列、树、图等。 * 算法基础:掌握常用的算法,例如排序...

    java读取xml文件导入到mysql数据库中

    xml文件导入到mysql数据库中,包括文件:ConnectionUtils.java,InsertDT.java,db_mysql.properties,test01.xml,需要的jar包dom4j-1.6.1.jar,mysql-connection-java-3.1.1.3-bin.jar,jaxen-1.1-beta-7.jar

    VereORM至简持久层微架构

    lib/dom4j-1.6.1.jar lib/jaxen-1.1-beta-6.jar lib/db2jcc4.jar //DB2 驱动 lib/jtds-1.2.jar //MS-SQL 驱动 lib/sqljdbc.jar //MS-SQL 驱动 lib/sqljdbc4.jar //MS-SQL 驱动 lib/mysql-connector-java-5.1.9...

    前端-后端java的Util类的工具类

    │ │ Dom4jHelper.java │ │ Escape.java │ │ ExecHelper.java │ │ FileHelper.java │ │ FileUploadUtil.java │ │ FileUtil.java │ │ ftp二进制与ascii传输方式区别.txt │ │ IPDeal.java │ │ Md5....

    学生选课系统中所用的60个jar包

    2.1.1.jar commons-dbcp.jar commons-digester.jar commons-fileupload.jar commons-httpclient.jar commons-lang.jar commons-logging.jar commons-pool.jar commons-validator.jar cos.jar db-ojb-1.0.4.jar dom4j-...

    PHP函数参考手册大全

    J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...

    中文版PHP使用手册

    J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...

    经典收藏最全php5.0查询手册

    J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...

    php手册PHP5研究室编无乱码版本chm

    J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可...

    PHP手册(带评论版-2008-03-14).part2.rar

    J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...

    PHP手册(带评论版-2008-03-14).part1.rar

    J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...

    Hibernate中文API

    dom4j.jar log4j.jar 到编写本文时为止,这些是Hibernate运行所需要的最小库文件集合(注意我们也拷贝了 Hibernate3.jar,这个是最主要的文件)。你正使用的Hibernate版本可能需要比这更多或少一些的库文件。请...

    PHP5 开发手册 简体中文手册

    J. 函数别名列表 K. 保留字列表 L. 资源类型列表 M. 支持的协议/封装协议列表 N. 可用过滤器列表 O. 所支持的套接字传输器(Socket Transports)列表 P. PHP 类型比较表 Q. 解析器代号列表 R. 关于本手册 S. 开放...

    php手册.chm,php手册

    J. 保留字列表 K. 资源类型列表 L. 支持的协议/封装协议列表 M. 可用过滤器列表 N. 所支持的套接字传输器(Socket Transports)列表 O. PHP 类型比较表 P. 解析器代号列表 Q. 关于本手册 R. 开放出版许可协议 S. ...

    elemental2:对Java代码的浏览器API进行类型检查访问

    Elemental2· Elemental2提供对所有Java代码浏览器API的类型检查访问。 这是通过使用并生成JsTypes来完成的,这些是在GWT和J2CL中都实现的一部分。Bazel依赖如果您的项目使用 ,请将此存储库作为外部依赖项添加到您...

    php中文完全开发手册

    J. 支持的协议/封装协议列表 K. 所支持的套接字传输器(Socket Transports)列表 L. PHP 类型及比较符表 M. 解析器代号列表 N. 关于本手册 O. Open Publication License P. 函数索引 Q. 补充说明 X. 微软 HTML 帮助...

    php帮助文档,php。chm,php必备的中文手册

    J. 函数别名列表 K. 保留字列表 L. 资源类型列表 M. 支持的协议/封装协议列表 N. 可用过滤器列表 O. 所支持的套接字传输器(Socket Transports)列表 P. PHP 类型比较表 Q. 解析器代号列表 R. 关于本手册 S. 开放...

    PHP官方手册中文版

    J. 所支持时区列表 K. 扩展库分类 L. 函数别名列表 M. 保留字列表 N. 资源类型列表 O. 支持的协议/封装协议列表 P. 可用过滤器列表 Q. 所支持的套接字传输器(Socket Transports)列表 R. PHP 类型比较表 ...

Global site tag (gtag.js) - Google Analytics