《JAVA读取数据库的ML配置文件.docx》由会员分享,可在线阅读,更多相关《JAVA读取数据库的ML配置文件.docx(10页珍藏版)》请在三一办公上搜索。
1、JAVA读取数据库的ML配置文件原创JAVA读取数据库的XML配置文件.前言.虽然现在有HEIBERNATE开源结构做为持久层,可以很好的解决这个问题.当然,SSH这些开源结构,也必并非人人都得学去用.我个人就喜欢自已写几个常用的类在开发时可以多次使用.下次共享我所常用的数据库链接类.经过读取XML配置文件来方便用户随时更改数据库配置文件.申明:以下源代码是我的研究心血,转帖请保留作者名字.为了方便JSP初学者而共享.1 . 用来保存数据库参数的XML文件. 该文件请放在web-inf下的classes目录下.否则程序会找不到配置文件的路径.文件名 :mysql数据库Config.xml<
2、?xml version=1.0 encoding=UTF-8?><!- = 对照下表自行更改数据库参数 =SererName = 数据库服务器IP地址ServerPort = 数据库服务器端口DataBaseName = 数据库名字UserName = 数据库登陆帐号Password = 数据库登陆密码 说明 : 请确保你的帐号具有操作该数据库的所有权限.程序开发: NightEagle=-><reportenv><datasource><servername>127.0.0.1</servername><serverport>3306&l
3、t/serverport><databasename>roadmin</databasename><username>admin</username><password>admin</password></datasource></reportenv>2 编写读取XML配置文件的类.文件名: ConfigParser.javapackage roadmin.Conn;import java.util.Properties;import org.xml.sax.Attributes;import org.xml.sax.SAXE
4、xception;import org.xml.sax.helpers.DefaultHandler;/* 程序开发: NightEagle */class ConfigParser extends DefaultHandler /定义一个Properties 用来存放属性值PageRankivate Properties PageRankops;PageRankivate String currentSet;PageRankivate String currentName;PageRankivate StringBuffer currentValue = new StringBuffer;/
5、 构建器初始化PageRankopspublic ConfigParser this.PageRankops = new Properties;public Properties getProps return this.PageRankops;/ 定义开始解析元素的方法. 那里是将<*>中的名字*提取出来.public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException currentValue.delete(0, current
6、Value.length);this.currentName = qName;/ 那里是将<*></*>之间的值加入到currentValuepublic void characters(char ch, int start, int length) throwsSAXException currentValue.append(ch, start, length);/ 在遇到</*>结束后,将之前的名字和值一一对应保存在PageRankops中public void endElement(String uri, String localName, String qNam
7、e) throwsSAXException PageRankops.put(qName.toLowerCase, currentValue.toString.trim);3 编写一个类.将读取的XML文件解析出来.文件名: ParseXML.JAVApackage roadmin.Conn;import java.util.Properties;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;/* 程序开发: NightEagle */class ParseXML / 定义一个Proper
8、ties 用来存放属性值PageRankivate Properties PageRankops;public Properties getProps return this.PageRankops;public void parse(String filename) throws Exception / 将我们的解析器对象化ConfigParser handler = new ConfigParser;/ 获取SAX工厂对象SAXParserFactory factory = SAXParserFactory.newInstance;factory.setNamespaceAware(fal
9、se);factory.setValidating(false);/ 获取SAX解析SAXParser parser = factory.newSAXParser;try / 将解析器和解析对象xml联系起来,开始解析parser.parse(filename, handler);/ 获取解析成功后的属性PageRankops = handler.getProps; finally factory = null;parser = null;handler = null;4 将解析后的参数封装到一个JAVABEAN.读取出来.文件名: ReadConfigXml.javapackage road
10、min.Conn;import java.util.Properties;/* 程序开发: NightEagle */public class ReadConfigXml PageRankivate Properties PageRankops;public ReadConfigXml(String url) ParseXML myRead = new ParseXML;try myRead.parse(url);PageRankops = new Properties;PageRankops = myRead.getProps; catch (Exception e) e.PageRanki
11、ntStackTrace;public String getServerName return PageRankops.getProperty(servername);public String getServerPort return PageRankops.getProperty(serverport);public String getDatabaseName return PageRankops.getProperty(databasename);public String getUserName return PageRankops.getProperty(username);pub
12、lic String getPassWord return PageRankops.getProperty(password);5 数据库链接类.将存放在JAVABEAN中的参数文件读出来,并拼接在数据库链接字符串中.(以mysql数据库为例.)文件名: DataBase.javapackage roadmin.Conn;import java.sql.*;import java.util.*;import roadmin.Conn.ReadConfigXml;import java.io.File;/* 程序开发: NightEagle */public class DataBase Pag
13、eRankivate Connection Conn;PageRankivate String CONFIG = mysql数据库Config.xml; /定义常量.即XML配置文件的名字.public DataBase public static DataBase newInstance return new DataBase;public Connection getConn String Path = DataBase.class.getResource(/) CONFIG; /获取当前XML文件所在的路径ReadConfigXml xml = new ReadConfigXml(Pat
14、h);String dbhost = xml.getServerName;String dbName = xml.getDatabaseName;String dbUser = xml.getUserName;String dbPass = xml.getPassWord;String dbDriver = org.gjt.mm.mysql数据库.Driver;String dbURL = jdbc:mysql数据库:/ dbhost / dbName ?user=dbUser amp;password= dbPassamp;autoReconnect=trueamp;failOverReadOnly=false;try Class.forName(dbDriver);Conn = DriverManager.getConnection(dbURL); catch (SQLException ex) ex.PageRankintStackTrace; catch (ClassNotFoundException ex1) ex1.PageRankintStackTrace;return Conn;