JDBC(Java Database Connectivity)是Java中用于连接和操作数据库的一种标准方式。而ORM(Object-Relational Mapping)框架,如Hibernate、MyBatis等,则是在JDBC的基础上,通过映射关系来操作数据库,使得开发人员更关注于业务逻辑而不是数据库操作。
这里将介绍如何使用JDBC和ORM框架(以MyBatis为例)连接和操作数据库。
使用JDBC连接和操作数据库
Class.forName()
加载驱动,然后使用DriverManager.getConnection()
方法建立连接。Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
Statement stmt = conn.createStatement();
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM mytable WHERE id = ?");
ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");
ResultSet rs = pstmt.executeQuery("123"); // 替换参数值
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
// 处理数据...
}
rs.close();
pstmt.close();
stmt.close();
conn.close();
使用MyBatis连接和操作数据库
mybatis-config.xml
):配置数据库连接信息、映射文件位置等。Mapper.xml
):定义SQL语句,并指定SQL语句id和Mapper接口中的方法名对应。在代码中使用SQL语句进行增、删、改、查操作的具体方式取决于你使用的编程语言和数据库系统。下面是一些常见编程语言和数据库系统的示例:
Python使用sqlite3模块操作SQLite数据库:
import sqlite3
# 连接到SQLite数据库
conn = sqlite3.connect('example.db')
# 创建一个游标对象
cursor = conn.cursor()
# 执行SELECT查询
cursor.execute("SELECT * FROM my_table")
# 获取查询结果
results = cursor.fetchall()
for row in results:
print(row)
# 执行INSERT语句
cursor.execute("INSERT INTO my_table (column1, column2) VALUES (?, ?)", ("value1", "value2"))
# 提交更改
conn.commit()
# 执行UPDATE语句
cursor.execute("UPDATE my_table SET column1 = ? WHERE column2 = ?", ("new_value", "condition"))
# 提交更改
conn.commit()
# 执行DELETE语句
cursor.execute("DELETE FROM my_table WHERE column2 = ?", ("condition",))
# 提交更改
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
Java使用JDBC连接MySQL数据库:
import java.sql.*;
// 连接到MySQL数据库
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "myusername";
String password = "mypassword";
Connection conn = DriverManager.getConnection(url, username, password);
// 创建一个Statement对象
Statement stmt = conn.createStatement();
// 执行SELECT查询
ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
// 处理数据...
}
// 执行INSERT语句
stmt.executeUpdate("INSERT INTO mytable (id, name) VALUES (?, ?)", 1, "John");
// 执行UPDATE语句
stmt.executeUpdate("UPDATE mytable SET name = ? WHERE id = ?", "Jane", 1);
// 执行DELETE语句
stmt.executeUpdate("DELETE FROM mytable WHERE id = ?", 1);
处理事务和数据库连接的关闭是数据库操作中的重要步骤,以确保数据的完整性和系统资源的正确管理。以下是处理事务和关闭数据库连接的一些常见方法:
以下是使用Python和SQLite数据库时的一个简单示例,演示了如何处理事务和关闭数据库连接:
import sqlite3
try:
# 连接到SQLite数据库
conn = sqlite3.connect('example.db')
# 开启一个事务
conn.execute("BEGIN TRANSACTION")
# 创建一个游标对象
cursor = conn.cursor()
# 执行一些数据库操作...
cursor.execute("INSERT INTO my_table (column1, column2) VALUES (?, ?)", ("value1", "value2"))
# 提交事务
conn.commit()
except sqlite3.Error as e:
print("An error occurred:", e)
# 发生错误时回滚事务
conn.rollback()
finally:
# 关闭游标和连接
if cursor:
cursor.close()
if conn:
conn.close()