JDBC标准实现

JDBC是什么

Java Database Connectivity:Java访问数据库的解 决方案

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

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

JDBC相关类与接口

驱动管理类 DriverManager

连接接口 Connection

语句对象接口 Statement

结果集接口 ResultSet

JDBC工作原理

下载驱动

• 下载对应的数据库的驱动 mysql-connector-java-5.0.4-bin.jar

• 将驱动类加载到项目中 Eclipse: Build Path

使用DriverManager加载驱动类

•  加载驱动类

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

Connection接口

• 根据URL连接参数找到与之匹配的Driver对象, 调用其方法获取连接

: Connection只是接口!真正的实现是数据库厂商提供的驱动包 完成的。         jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT

连接字符串          MySQL: jdbc:mysql:// Oracle: jdbc:oracle:thin:@

数据库地址         数据库的地址以及端 口号 localhost:本机IP 3306:MySQL默认 端口号

数据库名        具体要连接数据库服 务器上的哪一个数据库

Statement接口

• Statement用于执行SQL语句

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

ResultSet接口

•  执行查询SQL语句后返回的结果集,由 ResultSet接口接收。、

•  常用处理方式:遍历/判断是否有结果

• 查询结果存放在ResultSet对象的一系列行中

• ResultSet对象的最初位置在行首

• ResultSet.next()方法用来在行间移动

• ResultSet.getXXX()方法用来取得字段的内容

关闭并释放资源

• 数据库操作执行完毕以后要释放相关资源

• Connection

• Statement

• ResultSet

package com.xn.Connector;

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

public class ConnectorTest {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		
		//com.mysql.cj.jdbc.Driver
		//1.加载驱动     --反射
		Class.forName("com.mysql.cj.jdbc.Driver");
		
		//2.获取连接对象
		String url="jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT";
		String user="root";
		String pwd="123456";
		Connection conn=DriverManager.getConnection(url,user,pwd);
		
		System.out.println(conn);
		
		//3.释放资源
		conn.close();
		
		
	}
}


//添加
package com.xn.Connector;

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

import com.mysql.cj.xdevapi.Statement;

public class InsertTest {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		
		//1. 加载驱动
		Class.forName("com.mysql.cj.jdbc.Driver");
		
		//2.获取连接
		String url="jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT";
		String user="root";
		String pwd="123456";
		Connection conn=DriverManager.getConnection(url,user,pwd);
		
		//3.获取sql执行对象
		java.sql.Statement statm=conn.createStatement();
		
		String sql="insert into student(sname,birthday,ssex,classid)values('迪迦','1888-8-1','男',1)";
		int ret = statm.executeUpdate(sql);
		
		
		//逻辑
		if(ret>0) {
			System.out.println("添加成功");
		}else {
			System.out.println("添加失败");
		}
		
		//4.释放资源
		conn.close();
	}
}


//修改
package com.xn.Connector;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

//字符串的修改
public class UpdateTest {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		Scanner input=new Scanner(System.in);
		//1. 加载驱动
		Class.forName("com.mysql.cj.jdbc.Driver");
		
		//2.获取连接
		String url="jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT";
		String user="root";
		String pwd="123456";
		Connection conn=DriverManager.getConnection(url,user,pwd);
		
		
		//3.获取sql执行对象
		Statement statm=conn.createStatement();
		
		System.out.println("请输入学生编号:");
		String sid=input.next();
		System.out.println("请输入学生名字:");
		String sname=input.next();
		System.out.println("请输入学生生日:");
		String bir=input.next();
		System.out.println("请输入学生性别:");
		String sex=input.next();
		System.out.println("请输入学生新班级编号:");
		String gid=input.next();
				
		
		String sql="update student set sname='"+sname+"',"
				+ "birthday='"+bir+"',ssex='"+sex+"',classid="+gid+" where sid="+sid;
				
		int ret=statm.executeUpdate(sql);
		
		if(ret>0) {
			System.out.println("修改成功");
		}else {
			System.out.println("修改失败");
		}
		
		//4.释放资源
		conn.close();
		
		
		
	}
}


//删除
package com.xn.Connector;

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

public class DeleteTest {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		// 1. 加载驱动
		Class.forName("com.mysql.cj.jdbc.Driver");

		// 2.获取连接
		String url = "jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT";
		String user = "root";
		String pwd = "123456";
		Connection conn = DriverManager.getConnection(url, user, pwd);

		// 3.获取sql执行对象
		java.sql.Statement statm = conn.createStatement();

		String sql = "delete from student where sid=14";
		int ret = statm.executeUpdate(sql);

		// 逻辑
		if (ret > 0) {
			System.out.println("删除成功");
		} else {
			System.out.println("删除失败");
		}
		// 4.释放资源
		conn.close();

	}
}


//查找
package com.xn.Connector;

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


public class FindTest {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		// 1. 加载驱动
		Class.forName("com.mysql.cj.jdbc.Driver");

		// 2.获取连接
		String url = "jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT";
		String user = "root";
		String pwd = "123456";
		Connection conn = DriverManager.getConnection(url, user, pwd);

		// 3.获取sql执行对象
		Statement statm = conn.createStatement();

		String sql = "select * from student";

		ResultSet rs = statm.executeQuery(sql);

		// 测试
		System.out.println(rs);

		// 解析结果集
		while (rs.next()) {
//			int sid = rs.getInt(1);
//			String sname = rs.getString(2);
//			Date bir = rs.getDate(3);
//			String sex = rs.getString(4);
//			int classid = rs.getInt(5);
			
			int sid=rs.getInt("sid");
			String sname = rs.getString("sname");
			Date bir = rs.getDate("birthday");
			String sex = rs.getString("ssex");
			int classid = rs.getInt("classid");
			
			System.out.println(sid + sname + bir + sex + classid);
		}

	}
}



package com.xn.Connector;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class LoginTest {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		
		// sql 注入
		// 通过一些特殊的符号 让原本的sql失效,让sql执行新的sql指令
		// 1. 正则表达式
		// 2. JDBC 
		
		
		Scanner input = new Scanner(System.in);
		
		// 1. 加载驱动
		Class.forName("com.mysql.cj.jdbc.Driver");
		// 2. 获取连接
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT", "root", "123456");

		// 3. sql执行对象
//		Statement statm = conn.createStatement();
		
		System.out.println("请输入账号");
		String username = input.nextLine();
		System.out.println("请输入密码");
		String userpwd = input.nextLine();
		
		// jdbc 操作数据库的index 都是从1开始
//		PreparedStatement 防止sql注入
		// 1. 预处理sql语句
		String sql = "select * from login where lname=? and lpwd=?";
		PreparedStatement prepareStatement = conn.prepareStatement(sql);
		
		//  2. ? 变成真正的参数
		prepareStatement.setObject(1, username);
		prepareStatement.setObject(2, userpwd);
		
		// 3. 执行
		ResultSet rs = prepareStatement.executeQuery();
	
		
//		ResultSet rs = statm.executeQuery(sql);
		
		if(rs.next()) {
			int lid = rs.getInt("lid");
			String lrname = rs.getString("lrname");
			String lsex = rs.getString("lsex");
			String laddr = rs.getString("laddr");
			System.out.println(lid+lrname+lsex+laddr);
		}else {
			System.out.println("登录失败,连个账号密码都记不住,你能干啥");
		}
		
		// 释放资源
		rs.close();
//		statm.close();
		prepareStatement.close();
		conn.close();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值