详述JDBC执行过程

3 篇文章 0 订阅

首先JDBC是什么?

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

  •  实现java数据库连接和用eclipse删除数据库中表数据
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
//实现用eclipse删除数据库中表数据
public class BeforeUpdate {
	public static void main(String[] args) {
		Statement state =null;
		Connection con =null;
		try {
			Class.forName("com.mysql.jdbc.Driver");//1、加载驱动类
			 con =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");//2、建立连接,获得Connection返回值
			 state =con.createStatement();//3、创建语句
			int effect = state.executeUpdate("delect from user_name");//4、执行语句
			if(effect>0){//5、处理结果
				System.out.println("删除成功");
			}else {
				System.out.println("删除失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {//6.释放资源
			if (state != null) {//判断一下是否为空,防止报空指针异常
				try {
					state.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
			if (con != null) {
				try {
					state.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
		}
		
	}
}
  • 这个方法每次执行都需要重新写一次程序,重新修改程序,是否可以把程序封装起来,写成一个方法,然后实现只输入sql语句,就可以用ecilpse进行操作数据库,增加代码的复用率。
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
//将上述方法进行封装
public class BeforeUpdate {
	public static boolean upd(String sql) {
		Statement state =null;
		Connection con =null;
		try {
			Class.forName("com.mysql.jdbc.Driver");//1、加载驱动类
			 con =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");//2、建立连接,获得Connection返回值
			 state =con.createStatement();//3、创建语句
			int effect = state.executeUpdate(sql);//4、执行语句
			if(effect>0){//5、处理结果
				return true;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {//6.释放资源
			if (state != null) {
				try {
					state.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
			if (con != null) {
				try {
					state.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
		}
		return false;
		
	}
	public static void main(String[] args) {
		String sql ="delect from user_name";
		if(upd(sql)) {
			System.out.println("删除成功");
		}else {
			System.out.println("删除失败");
		}
		
	}
}
  • 使用ecilpse实现数据库的查询
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class BeforeSelect {
	public static void main(String[] args) {
		ResultSet resultSet=null;
		Statement statement =null;
		Connection connection =null;
		try {
			Class.forName("com.mysql.jdbc.Driver");//1、加载驱动
			connection =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");//2、建立连接
			statement =connection.createStatement();//3、创建语句
			resultSet= statement.executeQuery("select*from User_name");//4、执行语句
			while(resultSet.next()) {//5、操作结果
				String id = resultSet.getString("id");//可以使用getString,和getNString两种方法,但是getNString只适合NCHAR、NVARCHAR、LONGNVARCHAR的字段,不是这些字段会报错。
				String name = resultSet.getString("name");
				System.out.println(id+":"+name);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {//6、释放资源
			if (resultSet!=null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
			if (statement!=null) {
				try {
					statement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
			if (connection!=null) {
				try {
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
		}
	}
}
  • 同样对上述方法进行封装:让他好操作一些,增加代码的复用率,让代码更精简。
  • 其实使用上边的封装方法是不可以的,因为这个会出现resultset被关闭了,后续代码没法执行,报错,所以我们尝试用以下方式进行封装
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

interface IResultOut{//创建一个接口
	void getresult(ResultSet resultSet);
}

public class BeforeSelect {
	public static void select (String sql,IResultOut iResultOut) {
		ResultSet resultSet=null;
		Statement statement =null;
		Connection connection =null;
		try {
			Class.forName("com.mysql.jdbc.Driver");//加载驱动
			connection =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");//建立连接
			statement =connection.createStatement();//创建语句
			resultSet= statement.executeQuery(sql);//执行语句
			iResultOut.getresult(resultSet);
		
		} catch (Exception e) {
			e.printStackTrace();
		}finally {//释放资源
			if (resultSet!=null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
			if (statement!=null) {
				try {
					statement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
			if (connection!=null) {
				try {
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} 
			}
		}
	}
	public static void main(String[] args) {
		String sql= "select*from User_name";
		class Resultout implements IResultOut{
			public void getresult(ResultSet resultSet) {
				try {
					while(resultSet.next()) {//5、操作结果
						String id = resultSet.getString("id");//
						String name = resultSet.getString("name");
						System.out.println(id+":"+name);
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}			
		}
		select(sql,new Resultout());
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值