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>
分享到:
相关推荐
总结起来,不直接写SQL语句的Java MySQL数据库操作通常依赖于ORM框架或Spring提供的数据访问工具,这些工具通过映射机制和高级API,使得开发者可以更加专注于业务逻辑,而不是数据库细节。在实际项目中,`DataAccess...
Druid支持多种数据库,包括MySQL,通过设置配置,你可以轻松地将它集成到Java项目中,提升数据库操作的效率和稳定性。 在实际开发中,使用这些库的步骤通常如下: 1. 加载驱动:使用`Class.forName()`方法加载`...
本篇文章将深入探讨如何使用Java进行MySQL数据库的基本操作,包括查询数据(DQL)、事务处理、索引应用以及Java Database Connectivity(JDBC)的使用。 首先,Java操作MySQL数据库的核心工具是JDBC,它是Java标准...
在现代软件开发中,Java语言和MySQL数据库的结合使用是技术领域中一个非常普遍且重要的课题。Java作为一门广泛应用于商业、企业级应用开发的编程语言,其稳定性和跨平台能力使其在软件开发领域占据着举足轻重的地位...
Java基于MySQL数据库的学生管理系统源码 Java基于MySQL数据库的学生管理系统源码 Java基于MySQL数据库的学生管理系统源码 Java基于MySQL数据库的学生管理系统源码 Java基于MySQL数据库的学生管理系统...
本文将详细介绍如何使用 Java 连接 MySql 数据库,并实现基本的数据库操作。 一、配置数据库连接信息 要连接 MySql 数据库,首先需要配置数据库连接信息。这里使用的是 Eclipse3.1 作为开发环境,并使用 j2sdk...
Java连接MySQL数据库主要依赖于MySQL提供的驱动程序,这个驱动程序通常被打包成一个JAR(Java Archive)文件,名为`mysql-connector-java`。在给定的文件名称列表中,我们看到的是`mysql-connector-java-5.1.7.jar`...
标题“Java备份MySQL数据库”指的是使用Java编程语言来创建一个程序,该程序能够对MySQL数据库进行备份操作。这种备份通常涉及导出数据库的结构和数据,以便在需要时可以恢复到某个特定时间点的状态。在Java中实现这...
### Java连接MySQL数据库知识点 #### 一、简介 在Java应用程序中连接MySQL数据库是一项常见的需求,无论是用于控制台程序还是J2EE网页开发。本文将详细介绍如何使用Java连接MySQL数据库,并进行基本的数据查询与...
Java链接mysql数据库代码,从链接到关闭,注释详细,一目了然
首先,Java连接MySQL数据库通常依赖于JDBC(Java Database Connectivity),这是一个Java API,允许Java程序与各种数据库进行交互。在给定的文件中,`mysql-connector.jar`是MySQL官方提供的JDBC驱动程序,它包含了...
Java连接MySQL数据库通常涉及到几个关键知识点,包括JDBC(Java Database Connectivity)、数据库驱动、数据库连接池以及具体的数据库操作。在"java连接mysql数据库连接池demo"这个项目中,我们可以深入探讨以下几个...
在Java编程中,连接MySQL数据库是一项基础且重要的任务,它使得应用程序能够与数据库进行交互,进行数据的存储、检索和更新。本压缩包文件“Java连接Mysql数据库代码.zip”包含了一个示例,用于帮助开发者了解如何在...
JAVA连接MySQL数据库的一篇技术文献
java语言对MySQL数据库内容进行插入、查找、删除等一系列操作代码及运行结果
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,...基于JAVA+Mysql数据库的学生信息管理系统源码+项目说明(课程
Java连接MySQL数据库是Java开发中的常见任务,JDBC(Java Database Connectivity)是Java与数据库交互的标准接口。本Demo将向你展示如何使用Java通过JDBC连接到MySQL数据库,执行SQL语句并处理结果。 首先,我们...
在这个场景中,我们有一个名为"Java访问MySQL数据库的测试程序"的项目,它是一个小型的应用程序,主要用于验证和实践如何使用Java语言来连接并操作MySQL数据库,执行基本的CRUD(创建Create、读取Read、更新Update、...