JDBC是java程序操作数据库API,它由一组用java语言编写的类和接口组成。
在JSP中连接数据库大致可以分为五步:
1.加载JDBC驱动程序
2.创建Connection对象的实例
3.输入SQL语句
4.执行SQL语句,获得查询结果
5.关闭连接
若将这五步类比为直接在mysql workbench上操作数据库:
1.打开软件
2.登入
3.选择sql语句模块
4.输入sql语句,获得结果
5.关闭软件
实现五个步骤对应的类及其常用方法简介:
1.java.lang.Class
方法名 | 功能简介 |
---|
forName(String className) | 每种数据库的驱动程序都应该提供一个Driver类,这个方法的功能就是获取对应数据库的Driver类实例,并把该实例注册到DriverManager类中,参数为要加载到Driver类的完整包名 |
2.1 DriverManager
方法名 | 功能简介 |
---|
public static Connection getConnection(String url,String user,Strgin password) | 根据指定数据库的URL、用户名及密码建立数据库连接Connection |
2.2 Connection
方法名 | 功能简介 |
---|
Statement createStatement() | 创建一个可用于执行sql语句的Statement对象 |
PreparedStatement prepareStatement(String sql) | 创建一个用于执行sql语句的preparedStatement对象 |
void close() | 立即释放此Connection对象的数据库连接占用的JDBC资源。在操作数据库后,应立即调用此方法 |
4.1Statement
方法名 | 功能简介 |
---|
Boolean execute(String sql) | 执行指定的sql语句。如果sql返回结果,返回true,否则返回false |
int executeUpdate(String sql) | 执行insert、update、delete类型的sql语句,返回影响的行数 |
ResultSet executeQuery(String sql) | 执行查询select类型的sql语句,返回查询所获取的结果集 |
void close() | 立即释放Statement对象的数据库和JDBC资源 |
4.2PreparedStatement
方法名 | 功能简介 |
---|
void setInt(int parameterIndex,int x) | 将int值x作为SQL语句中的参数值,parameterIndex为参数位置的索引 |
void setFloat(int parameterIndex, float x) | 将float值x作为SQL语句中的参数值,parameterIndex为参数位置的索引 |
void set*(int parameterIndex, * x) | *可取多种数值类型,如int、float、double、boolean、String、Date等等 |
4.3 Statement和PreparedStatement的区别:
PreparedStatement继承自Statement;
当SQL语句中有参数时,使用PreparedStatement,在SQL语句中使用占位符'?'来代替参数;
当SQL语句中没有参数时,使用Statement。
4.4 ResultSet:使用Result对象接收查询结果集
方法名 | 功能简介 |
---|
Boolean next() | 将光标位置向后移动一行,如移动的新行有效则返回true,否则返回false |
Date getDate(String columnLabel) | 以Date的方式获取当前行中,名为columnLabel的列的值 |
double getDouble(String columnLable | 以double的方式获取当前行中,名为columnLabel的列的值 |
Float getFloat(String columnLable | 以float的方式获取当前行中,名为columnLabel的列的值 |
Int getInt(String columnLable | 以int的方式获取当前行中,名为columnLabel的列的值 |
String getString(String columnLable | 以String的方式获取当前行中,名为columnLabel的列的值 |
void close() | 立即释放此ResultSet对象的数据库和JDBC资源 |
5.1 result.close();
statement.close();
preparedStatement.close();
connection.close();
下面用代码说明连接MySQL的过程
1.加载数据库驱动到JVM(java虚拟机)(打开软件)
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
2.创建Connection实例(登入)
try{
String url = "jdbc:mysql://localhost:3306/test"; //数据库名称为test
String username = "root";//登入用户名为root
String password = "root";//登入密码为root
Connection conn = DriverManager.getConnection(url,username,password);
}catch(SQLException e){
e.printStackTrace();
}
3&4.输入SQL语句,并执行
Statement stmt = conn.createStatement();
String sql = "select * from tb_book";
ResultSet rs = stmt.executeQuery(sql);
//若为有参数SQL语句
//String sql = "update tb_book set bookcount=? where id=?";// 更新SQL语句
//PreparedStatement ps = conn.prepareStatement(sql);// 获取PreparedStatement
//ps.setInt(1, bookCount); // 对SQL语句中的第一个参数赋值
//ps.setInt(2, id); // 对SQL语句中的第二个参数赋值
//ps.executeUpdate(); // 执行更新操作
5.关闭连接
//rs.close();
stmt.close();//ps.close();
conn.close();