Java使用JDBC用操作MySQL的基本实现

目录

一、JDBC是什么

二、JDBC链接数据库的六个步骤

三、添加jar包

四、DaoUtil

1、加载驱动、获取链接对象

2、释放资源

五、BaseDaoUtil层

六、基本操作

1、查询

2、新增

3、修改

4、删除


一、JDBC是什么

1、JDBC:访问数据库的解决方案

2、JAVA定义了一套标准接口,即访问数据库的通用API,不同的数据库厂商根据各自的数据库特点去实现这些接口

3、JDBC希望用相同的方式访问不同的数据库,让具体的数据库操作与数据库厂商无关,从而在不同数据库之间轻易切换

4、JAVA提供解决方案,数据库用接口去实现

二、JDBC链接数据库的六个步骤

1、加载驱动

2、通过DriverMannager获取连接对象

3、创建statement用于执行SQL语句

4、查询结果返回ResultSet

5、释放资源

三、添加jar包

四、DaoUtil

1、加载驱动、获取链接对象

通过Class.forName()方法反射完成驱动类注册


	static {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
		


    public static Connection getConn() {
		Connection conn=null;

			try {
				
				conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT","root","123456");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
		return conn;
	}

2、释放资源

public static void close(ResultSet rs,Statement state,Connection conn) {
		//释放
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}


		//释放statement
		if(state !=null) {
			try {
				state.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		//释放connection
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

五、BaseDaoUtil层

不同的SQL语句,要调用不同的方法来执行:

  • statement用于执行DML,返回int型的影响行数
int count =stmt.exxecuteUpdate(sql);
  • statement用于执行DQL,返回结果集由ResultSet接收
    ResultSet rs=stmt.executeQuery(sql);
public class UpdateAndFind{
	
	protected static Connection conn;
	protected static Statement state;
	protected static ResultSet rs;

	

	//增删改
	protected int update(String sql) {
		
		
		int ret=0;
		try {
			conn = DaoUtil.getConn();
			state = conn.createStatement();
			ret = state.executeUpdate(sql);


		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DaoUtil.close(null, state, conn);
		}
		
		return ret;
		
	}
	
	
	//查询
	protected ResultSet find(String sql) {
		
		
		int ret=0;
		try {
			conn = DaoUtil.getConn();
			state = conn.createStatement();
			rs = state.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return rs;
	}
	

六、基本操作

1、查询

@Override
	public List<Student> findAll() {
		List<Student> slist=null;
		
		try {

			rs=find("select * from student");


			if(rs !=null) {
				slist=new ArrayList<Student>();

				while(rs.next()) {
					Student s=new Student();
					s.setSid(rs.getInt("sid"));
					s.setSname(rs.getString("sname"));
					s.setBirthday(rs.getDate("birthday"));
					s.setSsex(rs.getString("ssex"));
					s.setClassid(rs.getInt("classid"));
					slist.add(s);
				}
			} 
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			//释放资源
			DaoUtil.close(rs, state, conn);
		}

		return slist;
	}

2、新增

	@Override
	public int add(Student s) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		 String sql = "insert into student(sname,birthday,ssex,classid) "
			 		+ "values('"+s.getSname()+"','"+ sdf.format(s.getBirthday()) +"','"+s.getSsex()+"',"+s.getClassid()+")";
		int ret =update(sql);
		if(ret>0) {
			System.out.println("新增成功");
		}else {
			System.out.println("新增失败");
		}
		return ret;
	}

3、修改

@Override
	public int update(Student s) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String sql="update student set sname= '"+s.getSname()+"',birthday='"+sdf.format(s.getBirthday())+"',ssex='"+s.getSsex()+"',classid='"+s.getClassid()+"'";
		
		int ret = update(sql);
		
		if(ret>0) {
			System.out.println("修改成功");
		}else {
			System.out.println("修改失败");
		}
		return ret;
	}

4、删除

@Override
	public int del(int sid) {
		int ret = update("delete from student where sid='"+sid+"'");
		
		if(ret >0) {
			System.out.println("删除成功");
		}else {
			System.out.println("删除失败");
		}
		
		return ret;
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值