Java基础之JDBC

本文介绍JDBC(Java Database Connectivity)的基本概念及使用方法,通过示例演示如何利用JDBC进行数据库连接、执行SQL语句、获取结果集并进行数据读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]JDBC - Java DataBase Connectivity[/b]

[b]JDBC[/b] 是 Java 面向关系型数据库提供的操作数据库的一套 API (Application Programming Interface)。
[b]JDBC[/b] 属于 JavaSE 的一部分。

[b]可以看到下面的类都是接口:[/b]

package java.sql;

public [b]interface[/b] Connection;
public [b]interface[/b] Statement;
public [b]interface[/b] ResultSet;


然后每个数据库生产商根据JDBC,提供自己的具体实现类。
___________________________________________________________________________


下面是一个基本的JDBC使用过程:



package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

public class JDBCBasic {

private Connection connect = null;
private Statement statement = null;
private PreparedStatement preparedStatement = null;
private ResultSet resultSet = null;

public void readDataBase() throws Exception {
try {
//1. This will load the MySQL driver, each DB has its own driver
Class.forName("com.mysql.jdbc.Driver");

//2. Setup the connection with the DB
connect = DriverManager
.getConnection("jdbc:mysql://localhost/feedback?"
+ "user=sqluser&password=sqluserpw");
// or
// DriverManager.getConnection(
// "jdbc:mysql://localhost/feedback", "sqluser", "sqluserpw");

//3.1 Statements allow to issue SQL queries to the database
statement = connect.createStatement();

//4.1 Result set get the result of the SQL query
resultSet = statement.executeQuery("select * from feedback.comments");
writeResultSet(resultSet);

//3.2 PreparedStatements can use variables and are more efficient
preparedStatement = connect
.prepareStatement("insert into feedback.comments values (default, ?, ?, ?, ? , ?, ?)");
// "myuser, webpage, datum, summary, COMMENTS from feedback.comments");
// Parameters start with 1
preparedStatement.setString(1, "Test");
preparedStatement.setString(2, "TestEmail");
preparedStatement.setString(3, "TestWebpage");
preparedStatement.setDate(4, new java.sql.Date(2009, 12, 11));
preparedStatement.setString(5, "TestSummary");
preparedStatement.setString(6, "TestComment");

//4.2
preparedStatement.executeUpdate();

preparedStatement = connect
.prepareStatement("SELECT myuser, webpage, datum, summary, COMMENTS from feedback.comments");
//4.3
resultSet = preparedStatement.executeQuery();
writeResultSet(resultSet);

// Remove again the insert comment
preparedStatement = connect
.prepareStatement("delete from feedback.comments where myuser= ? ; ");
preparedStatement.setString(1, "Test");
preparedStatement.executeUpdate();

resultSet = statement
.executeQuery("select * from feedback.comments");
writeMetaData(resultSet);

} catch (Exception e) {
throw e;
} finally {
close();
}

}

private void writeMetaData(ResultSet resultSet) throws SQLException {
// Now get some metadata from the database
// Result set get the result of the SQL query

System.out.println("The columns in the table are: ");

System.out.println("Table: " + resultSet.getMetaData().getTableName(1));
for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
System.out.println("Column " + i + " "
+ resultSet.getMetaData().getColumnName(i));
}
}

private void writeResultSet(ResultSet resultSet) throws SQLException {
// ResultSet is initially before the first data set
while (resultSet.next()) {
// It is possible to get the columns via name
// also possible to get the columns via the column number
// which starts at 1
// e.g. resultSet.getSTring(2);
String user = resultSet.getString("myuser");
String website = resultSet.getString("webpage");
String summary = resultSet.getString("summary");
Date date = resultSet.getDate("datum");
String comment = resultSet.getString("comments");
System.out.println("User: " + user);
System.out.println("Website: " + website);
System.out.println("summary: " + summary);
System.out.println("Date: " + date);
System.out.println("Comment: " + comment);
}
}

// You need to close the resultSet
private void close() {
try {
if (resultSet != null) {
resultSet.close();
}

if (statement != null) {
statement.close();
}

if (connect != null) {
connect.close();
}
} catch (Exception e) {

}
}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值