DriverManager类
实际开发中不使用该类,一般使用Class类的静态方法forName()来实现
Connection 接口
Connection 接口代表java程序和数据库的连接对象,只有获得该连接对象后,才能访问数据库,并操作数据表。在Connection接口中,定义了一系列方法,常用方法:
| 函数 | 说明 |
|---|---|
| Statement createStatement() | 该方法用于返回一个向数据库发送语句的Statement对象 |
| PreparedStatement prepareStatement(String sql) | 该方法用于返回一个preparedStatement 对象,该对象用于向数据库发送参数化的SQL语句 |
| CallableStatement prepareCall(String sql) | 该方法用于返回一个CallableStatement 对象,该对象用于调用数据库中的存储过程 |
Statement 接口
Statement 是 Java执行数据库操作的一个重要接口,它用于执行静态的SQL语句, 并返回一个结果对象。Statement 接口对象可以通过Connection 实例的 createStatement()方法获得,该对象会把静态的SQL语句发送到数据库中编译执行,然后返回数据库的处理结果
| 函数 | 说明 |
|---|---|
| boolean execute(String sql) | 用于执行各种sql语句,返回一个boolean 类型的值,如果为true,表示所执行的SQL语句有查询结果,可通过Statement的getResultSet()方法获得查询结果 |
| int executeUpdate(String sql) | 用于执行各种sql中的insert,update和delete语句,该方法返回一个int类型的值,表示数据库中受该sql语句影响的记录条数 |
| ResultSet executeQuery(String sql) | 用于执行SQL中的select语句,该方法返回一个表示查询结果的ResultSet对象 |
PreparedStatement 接口
解决 Statement的繁琐,以及安全问题,PreparedStatement 是 Statement 的子接口,用于执行预编译的SQL语句。该接口扩展了带有参数SQL语句的执行操作,应用接口中的SQL语句可以使用占位符“?”来代替其参数,然后同setXxx()方法为SQL参数赋值
常用方法:
| 函数 | 说明 |
|---|---|
| int executeUpdate() | 在此PreparedStatement 对象中执行SQL语句,该语句必须是一个DML语句或者是无返回内容的SQL语句,如DDL语句 |
| ResultSet executeQuery() | 在此PreparedStatement 对象中执行SQL查询,该方法返回的是ResultSet对象 |
| void setInt(int parameterIndex , int x) | 将指定参数设置为给定的int值 |
| void setFloat(int parameterIndex, float x) | 将指定参数设置为给定的float值 |
| void setString(int parameterIndex,String x) | 将指定参数设置为给定的String值 |
| void setDate(int parameterIndex,Date x) | 将指定参数设置为给定的Date值 |
| void addBatch | 将一组参数添加到此PreparedStatement 对象的批处理命令中 |
| void setCharacterStream(int parameterIndex,java.io.Reader reader,int length) | 将指定的输入流写入数据库的文本字段 |
| void setBinaryStream(int parameterIndex,java.io.InputStream x,int length) | 将二进制的输入流数据写入到二进制字段中在为SQL语句中的参数赋值时,可以通过输入参数与SQL类型相匹配的setXxx()方法, |
| setObject() | 方法设置多种类型的输入参数 |
ResultSet 接口
ResultSet接口用于保存JDBC执行查询时返回的结果集,该结果封装在一个逻辑表格中。在ResultSet接口内部有一个指向表格数据行的游标,ResultSet对象初始化时,游标在表格的第一行之前,调用next()方法可将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序中经常使用next()方法作为while循环的条件来迭代ResultSet结果集
| 函数 | 说明 |
|---|---|
| String getString(int columnIndex) | 用于获取指定字段的String 类型的值,参数columnIndex代表字段的索引 |
| String getString(String columnName) | 用于获取指定字段的String 类型的值,参数 columnName 代表字段的名称 |
| int getInt(int col) | 用于获取指定字段的int类型的值,参数col代表字段的索引 |
| int getInt(String col) | 用于获取指定字段的int类型的值,参数col代表字段的名称 |
| Date getDate(int col) | 用于获取指定字段的Date类型的值,参数col代表字段的索引 |
| Date getDate(String col) | 用于获取指定字段的Date类型的值,参数col代表字段的名称 |
| boolean next() | 将游标从当前位置向下移一行 |
| boolean absolute(int row) | 将游标移动到此 ResultSet对象的指定行 |
| void afterLast() | 将游标移动到此 ResultSet 对象的末尾,即最后一行之后 |
| void beforeFirst() | 将游标移动到此ResultSet对象的开头,即第一行之前 |
| boolean previous() | 将游标移动到此ResultSet对象的上一行 |
| boolean last() | 将游标移动到此 ResultSet对象的最后一行 |
e.g:
package array;
import java.sql.*;
public class array {
public static void main(String [] args)throws SQLException
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/数据库名";
String username = "xxxx";
String password = "xxxxxx";
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
String sql = "select * from Student";
rs = stmt.executeQuery(sql);
System.out.println(" Sno | Sname | Ssex | Sage | Sdept |");
while(rs.next()) {
String Sno = rs.getString("Sno");
String Sname = rs.getString("Sname");
String Ssex = rs.getString("Ssex");
String Sage = rs.getString("Sage");
String Sdept = rs.getString("Sdept");
System.out.println(" "+Sno+" | "+Sname+" | "+Ssex+" | "+Sage+" | "+Sdept+" |");
}
}catch(Exception e)
{
e.printStackTrace();
}finally
{
if(rs!=null) rs.close();
if(stmt!=null)stmt.close();
if(conn!=null)conn.close();
}
}
}
本文详细介绍了Java中通过JDBC进行数据库操作的方法,包括DriverManager、Connection、Statement、PreparedStatement及ResultSet等核心接口的功能与使用方式。
2186

被折叠的 条评论
为什么被折叠?



