java语法学习(9)JDBC

本文详细介绍了Java中通过JDBC进行数据库操作的方法,包括DriverManager、Connection、Statement、PreparedStatement及ResultSet等核心接口的功能与使用方式。

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();
    }
    
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dearzcs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值