`
chenxu_8456
  • 浏览: 41906 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Java操作MySQL数据库

阅读更多
Java操作数据库的最基本方式是通过JDBC进行的,在本文中将讲述通过JDBC来操作MySQL数据库的基础知识。
package framework.utils.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import framework.utils.xml.XmlUtil;

public class MysqlUtil {

	private static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver";

	private static MysqlUtil instance;

	public static MysqlUtil getInstance() {
		if (instance == null) {
			instance = new MysqlUtil();
		}
		return instance;
	}

	private MysqlUtil() {
	}

	public Connection getConnection(String name) throws Exception {
		Class.forName(MYSQL_DRIVER);
		MysqlDBInfo dbInfo = new MysqlDBInfo(name);
		return DriverManager.getConnection(dbInfo.url, dbInfo.userName,
				dbInfo.password);
	}

	public List<Map<String, Object>> query(Connection conn, String sql)
			throws Exception {
		List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
		Statement state = conn.createStatement();
		ResultSet set = state.executeQuery(sql);
		ResultSetMetaData metaData = set.getMetaData();
		int columnCount = metaData.getColumnCount();
		while (set.next()) {
			Map<String, Object> map = new HashMap<String, Object>();
			for (int i = 1; i <= columnCount; i++) {
				map.put(metaData.getColumnName(i), set.getObject(i));
			}
			result.add(map);
		}
		return result;
	}

	public boolean execute(Connection conn, String sql) throws Exception {
		Statement statement = conn.createStatement();
		return statement.execute(sql);
	}

	public int queryCount(Connection conn, String sql) throws Exception {
		Statement statement = conn.createStatement();
		ResultSet set = statement.executeQuery(sql);
		set.next();
		return set.getInt(1);
	}

	public int update(Connection conn, String sql) throws Exception {
		Statement statement = conn.createStatement();
		return statement.executeUpdate(sql);
	}

	class MysqlDBInfo {
		String url;
		String userName;
		String password;

		MysqlDBInfo(String dbConfig) throws Exception {
			String dbConfigFileName = this.getClass().getClassLoader()
					.getResource("dbconfig.xml").getFile();
			XmlUtil xmlUtil = XmlUtil.getInstance();
			Document document = xmlUtil.loadDocument(dbConfigFileName);
			Element root = xmlUtil.getRootElement(document);
			Element config = xmlUtil.getElementByAttribute(root, "name",
					dbConfig, 0, document);
			if (config == null) {
				throw new RuntimeException("未找到名称为" + dbConfig + "的数据库配置");
			}
			this.url = xmlUtil.getElementByTagName(config, "Url", 0, document)
					.getTextContent();
			this.userName = xmlUtil.getElementByTagName(config, "UserName", 0,
					document).getTextContent();
			this.password = xmlUtil.getElementByTagName(config, "Password", 0,
					document).getTextContent();
		}
	}

}


其中利用xml保存MySQL的数据库信息,操作XML的工具类和相关的配置文件如下:
package framework.utils.xml;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class XmlUtil {
	private static XmlUtil instance = null;

	private XmlUtil() {
	}

	public static XmlUtil getInstance() {
		if (instance == null) {
			instance = new XmlUtil();
		}
		return instance;
	}

	public Document loadDocument(String fileName) throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		return builder.parse(fileName);
	}

	public Document createDocument() throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		return builder.newDocument();
	}

	public Element getRootElement(Document document) {
		return document.getDocumentElement();
	}

	public Element createRootElement(String rootName, Document document) {
		Element root = document.createElement(rootName);
		document.appendChild(root);
		return root;
	}

	public List<Element> getElementsByTagName(Element parent, String tagName,
			Document document) {
		List<Element> elements = new ArrayList<Element>();
		if (parent == null) {
			parent = document.getDocumentElement();
		}
		NodeList elementsList = parent.getElementsByTagName(tagName);
		for (int i = 0; i < elementsList.getLength(); i++) {
			elements.add((Element) elementsList.item(i));
		}
		return elements;
	}

	public Element getElementByTagName(Element parent, String tagName,
			int index, Document document) {
		List<Element> elements = getElementsByTagName(parent, tagName, document);
		if (elements.size() <= 0) {
			return null;
		}
		if (index < 0 || index >= elements.size()) {
			return elements.get(0);
		}
		return elements.get(index);
	}

	public String getText(Element element) {
		return element.getTextContent();
	}

	public String getAttribute(Element element, String attrName) {
		return element.getAttribute(attrName);
	}

	public List<Element> getElementsByAttribute(Element parent,
			String attrName, String attrValue, Document document) {
		List<Element> elements = new ArrayList<Element>();
		if (parent == null) {
			parent = document.getDocumentElement();
		}
		NodeList elementsList = parent.getElementsByTagName("*");
		for (int i = 0; i < elementsList.getLength(); i++) {
			if (((Element) elementsList.item(i)).getAttribute(attrName).equals(
					attrValue)) {
				elements.add((Element) elementsList.item(i));
			}
		}
		return elements;
	}

	public Element getElementByAttribute(Element parent, String attrName,
			String attrValue, int index, Document document) {
		List<Element> elements = getElementsByAttribute(parent, attrName,
				attrValue, document);
		if (elements.size() <= 0) {
			return null;
		}
		if (index < 0 || index >= elements.size()) {
			return elements.get(0);
		}
		return elements.get(index);
	}

	public Element createElement(Element parent, String tagName, String text,
			Map<String, String> attrs, Document document) {
		if (parent == null) {
			parent = document.getDocumentElement();
		}
		Element element = document.createElement(tagName);
		if (text != null && text.length() > 0) {
			element.appendChild(document.createCDATASection(text));
		}
		if (!attrs.isEmpty()) {
			for (Entry<String, String> attr : attrs.entrySet()) {
				Attr newAttr = document.createAttribute(attr.getKey());
				newAttr.setValue(attr.getValue());
				element.setAttributeNode(newAttr);
			}
		}
		parent.appendChild(element);
		return element;
	}

	public void save(String fileName, Document document) throws Exception {
		TransformerFactory factory = TransformerFactory.newInstance();
		factory.setAttribute("indent-number", 4);
		Transformer transformer = factory.newTransformer();
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
		DOMSource source = new DOMSource(document);
		transformer.transform(source, new StreamResult(new OutputStreamWriter(
				new FileOutputStream(fileName), "UTF-8")));
	}

}


<?xml version="1.0" encoding="UTF-8"?>
<DBConfigs>
	<DBConfig name="test">
		<Url>jdbc:mysql://localhost:3306/test</Url>
		<UserName>root</UserName>
		<Password>******</Password>
	</DBConfig>
</DBConfigs>
分享到:
评论

相关推荐

    java操作mysql数据库,不写sql语句版

    总结起来,不直接写SQL语句的Java MySQL数据库操作通常依赖于ORM框架或Spring提供的数据访问工具,这些工具通过映射机制和高级API,使得开发者可以更加专注于业务逻辑,而不是数据库细节。在实际项目中,`DataAccess...

    JDBC德鲁伊MySQL等jar包适用于刚开始学习java操作mysql数据库

    Druid支持多种数据库,包括MySQL,通过设置配置,你可以轻松地将它集成到Java项目中,提升数据库操作的效率和稳定性。 在实际开发中,使用这些库的步骤通常如下: 1. 加载驱动:使用`Class.forName()`方法加载`...

    Java操作MySQL数据库的基础运用

    本篇文章将深入探讨如何使用Java进行MySQL数据库的基本操作,包括查询数据(DQL)、事务处理、索引应用以及Java Database Connectivity(JDBC)的使用。 首先,Java操作MySQL数据库的核心工具是JDBC,它是Java标准...

    浅谈Java中Mysql数据库的连接与操作.pdf

    在现代软件开发中,Java语言和MySQL数据库的结合使用是技术领域中一个非常普遍且重要的课题。Java作为一门广泛应用于商业、企业级应用开发的编程语言,其稳定性和跨平台能力使其在软件开发领域占据着举足轻重的地位...

    Java基于MySQL数据库的学生管理系统源码.zip

    Java基于MySQL数据库的学生管理系统源码 Java基于MySQL数据库的学生管理系统源码 Java基于MySQL数据库的学生管理系统源码 Java基于MySQL数据库的学生管理系统源码 Java基于MySQL数据库的学生管理系统...

    Java连接MySql数据库,并且实现插入、删除、更新、选择操作.pdf

    本文将详细介绍如何使用 Java 连接 MySql 数据库,并实现基本的数据库操作。 一、配置数据库连接信息 要连接 MySql 数据库,首先需要配置数据库连接信息。这里使用的是 Eclipse3.1 作为开发环境,并使用 j2sdk...

    java连接mysql数据库用到的jar包

    Java连接MySQL数据库主要依赖于MySQL提供的驱动程序,这个驱动程序通常被打包成一个JAR(Java Archive)文件,名为`mysql-connector-java`。在给定的文件名称列表中,我们看到的是`mysql-connector-java-5.1.7.jar`...

    java备份mysql数据库

    标题“Java备份MySQL数据库”指的是使用Java编程语言来创建一个程序,该程序能够对MySQL数据库进行备份操作。这种备份通常涉及导出数据库的结构和数据,以便在需要时可以恢复到某个特定时间点的状态。在Java中实现这...

    java连接mysql数据库

    ### Java连接MySQL数据库知识点 #### 一、简介 在Java应用程序中连接MySQL数据库是一项常见的需求,无论是用于控制台程序还是J2EE网页开发。本文将详细介绍如何使用Java连接MySQL数据库,并进行基本的数据查询与...

    java链接mysql数据库

    Java链接mysql数据库代码,从链接到关闭,注释详细,一目了然

    Java连接MySql数据库

    首先,Java连接MySQL数据库通常依赖于JDBC(Java Database Connectivity),这是一个Java API,允许Java程序与各种数据库进行交互。在给定的文件中,`mysql-connector.jar`是MySQL官方提供的JDBC驱动程序,它包含了...

    java连接mysql数据库连接池demo

    Java连接MySQL数据库通常涉及到几个关键知识点,包括JDBC(Java Database Connectivity)、数据库驱动、数据库连接池以及具体的数据库操作。在"java连接mysql数据库连接池demo"这个项目中,我们可以深入探讨以下几个...

    Java连接Mysql数据库代码.zip

    在Java编程中,连接MySQL数据库是一项基础且重要的任务,它使得应用程序能够与数据库进行交互,进行数据的存储、检索和更新。本压缩包文件“Java连接Mysql数据库代码.zip”包含了一个示例,用于帮助开发者了解如何在...

    Java连接Mysql数据库的方法

    JAVA连接MySQL数据库的一篇技术文献

    java程序基础操作MySQL数据库

    java语言对MySQL数据库内容进行插入、查找、删除等一系列操作代码及运行结果

    基于JAVA+Mysql数据库的学生信息管理系统源码+项目说明(课程设计).zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,...基于JAVA+Mysql数据库的学生信息管理系统源码+项目说明(课程

    java连接Mysql数据库Demo

    Java连接MySQL数据库是Java开发中的常见任务,JDBC(Java Database Connectivity)是Java与数据库交互的标准接口。本Demo将向你展示如何使用Java通过JDBC连接到MySQL数据库,执行SQL语句并处理结果。 首先,我们...

    Java访问MySQL数据库的测试程序

    在这个场景中,我们有一个名为"Java访问MySQL数据库的测试程序"的项目,它是一个小型的应用程序,主要用于验证和实践如何使用Java语言来连接并操作MySQL数据库,执行基本的CRUD(创建Create、读取Read、更新Update、...

Global site tag (gtag.js) - Google Analytics