Java进阶之JDBC


Java进阶之JDBC
一、JDBC初识
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成
JDBC常用接口:
Connection接口
Statement接口
PreparedStatement接口
ResultSet接口
CallableStatement接口
DriverManager类

二、JDBC驱动安装
下载JDBC驱动包
mysql官方网站进行下载

配置JDBC驱动
    方式一: 
选中工程右击->Build Path->Add External Archival->选择mysql驱动包->Ok
方式二:
把mysql驱动包直接粘贴到工程目录下->选中jar包右击->Build Path->Add to BuildPath

驱动加载获取连接步骤:
1.加载驱动类
  Class.forName("com.mysql.jdbc.Driver");
2.通过地址和用户名密码获取连接
 DriverManager.getConnection(jdbc:mysql://地址:端口/l","root","admin");

三、JDBC增删查改操作
jdbc增删改操作
1、获取连接
2、获取Statement对象
    Connection.createStatement()
3、整理插入的sql语句字符串
  String sql="sql语句"
4、发送并执行sql语句
 Statement.executeUpdate(sql语句);
5、关闭连接

jdbc查找操作
1、获取连接
2、获取Statement对象
    Connection.createStatement()
3、整理查询的sql语句字符串
  String sql="sql语句"
4、发送并执行sql语句
 ResultSet rs = Statement.executeQuery(sql语句);
5、处理结果集
6、关闭连接

ResultSet接口
对于数据库查询操作,ResultSet主要用于接收查询出来的结果集
常用方法
next、getInt、getDate、getString

四、预编译对象

预编译对象
PreparedStatement 接口继承了Statement 
可以高效的重复执行sql语句
PreparedStatement 实例包含已编译的 SQL 语句


编写语法
PreparedStatement pstmt = con.prepareStatement("select * from table_name where name = ?");



五、代码演示:

package MySqlConnection;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

public class ConnectionTest {
	
	public ArrayList<Teacher> list = new ArrayList<Teacher>();

	public static void main(String[] args) {
		ConnectionTest test = new ConnectionTest();
		// test.preInsert();
		test.insert1(76, "ZZZZ", "man", 23, "Studeng", "2017-02-21");
	}

	public void insert() {
		try {
			// 1、获取连接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.创建StateMent对象
			Statement state = connection.createStatement();
			// 3.整理一条sql数据
			String sql = "INSERT into teacher VALUES (10,'zhouzhou','man',21,'student','2017-02-24');";
			// 4.强这条数据插入到数据库中
			state.execute(sql);
			// 关闭连接
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void delete() {

		try {
			// 1.获取连接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.创建StateMent对象
			Statement state = connection.createStatement();
			// 3.整理删除sql语句
			String sql = "delete from teacher where id=10";
			// 4.发送并执行sql语句
			state.execute(sql);
			// 5.关闭资源
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void updata() {
		try {
			// 1.获取连接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.创建Statement对象
			Statement state = connection.createStatement();
			// 3.正路sql语句
			String sql = "update teacher set name='KeChuang' where id=6;";
			// 4.发送并执行sql语句
			state.execute(sql);
			// 5.关闭资源
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void query() {
		try {
			// 1.获取连接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.创建Statement对象
			Statement state = connection.createStatement();
			// 3.整理sql语句
			String sql = "select * from teacher;";
			// 4.发送并执行sql语句
			ResultSet rs = state.executeQuery(sql);
			while (rs.next()) {
				int id = rs.getInt(1);
				String name = rs.getString(2);
				String gender = rs.getString(3);
				int age = rs.getInt(4);
				String job = rs.getString(5);
				String date = rs.getString(6);
				System.out.println("id: " + id + "   " + "name: " + name + "   gender: " + gender + "   age: " + age
						+ "   job: " + job + "   date: " + date + ": ");
			}
			// 5.关闭资源
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void preInsert() {

		try {
			// 1.获取连接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.创建prepareStatement对象
			PreparedStatement prement = connection
					.prepareStatement("insert into teacher values(278,'ZuoJiang','man',22,'Student','2017-01-11');");
			// 3.发送并执行sql语句
			prement.execute();
			// 4.关闭资源
			prement.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void preInsert(int id, String name, String gender, int age, String job, String date) {

		try {
			// 1.加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 2.获取和数据库的简介
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 3.获取预编译对象
			PreparedStatement ment = connection
					.prepareStatement("insert into teacher (id,name,gender,age,job,createDate) VALUES (?,?,?,?,?,?);");
			ment.setInt(1, id);
			ment.setString(2, name);
			ment.setString(3, gender);
			ment.setInt(4, age);
			ment.setString(5, job);
			ment.setString(6, date);
			ment.execute();
			// 4.关闭资源
			ment.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void insert1(int id, String name, String gender, int age, String job, String date) {

		try {
			// 1.获取连接
			Class.forName("com.mysql.jdbc.Driver");
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhou", "root", "zhou");
			// 2.创建Statement对象
			Statement state = connection.createStatement();
			// 3.整理一条sql语句
			String sql = "insert into teacher (id,name,gender,age,job,createDate) values (" + id + ",'" + name + "','"
					+ gender + "','" + age + "','" + job + "','" + date + "'" + ");";
			// 4.发送并执行sql语句
			// System.out.println(sql);
			state.execute(sql);
			// 5.关闭资源
			state.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void queryAll() {

		try {
			// 1.加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 2.获取连接
			Connection connection = DriverManager.getConnection("jdbc:mydql://localhost:3306/zhou", "root", "zhou");
			Statement state = connection.createStatement();
			// 3.整理sql语句
			String sql = "select * from teacher";
			// 4.发送并执行sql语句
			ResultSet set = state.executeQuery(sql);
			while (set.next()) {
				int id = set.getInt(1);
				String name = set.getString(2);
				String gender = set.getString(3);
				int age = set.getInt(4);
				String job = set.getString(5);
				String date = set.getString(6);
				Teacher t = new Teacher(id, name, gender, age, job, date);
				list.add(t);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


package MySqlConnection;

public class Teacher {
	
	private int id;
	private String name;
	private String gender;
	private int age;
	private String job;
	private String date;
	
	public Teacher(int id, String name, String gender, int age, String job, String date) {
		super();
		this.id = id;
		this.name = name;
		this.gender = gender;
		this.age = age;
		this.job = job;
		this.date = date;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}

}

六、总结

上面的代码首先的安装好Mysql数据库以及加载相应的驱动包;

以前刚接触JDBC的时候觉得很难,现在把思路整理清楚了,其实也很简单;

你可能觉得加载驱动那一段长长的代码可能会有点怕,其实不用紧张,多敲几遍就好了,看上面,我就敲了好几遍;

写程序真的思路很重要啊,不过思路是在你理解了相关的知识之后的;基础没打好,学习到后面可能就会吃力;所以,Java基础一定要学好;可能你觉得你的Java基础学得不错了,其实那可能还只是皮毛;

共勉!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值