JDBC Java对数据库增删改查(完整案例)

目录

一.综合上述7个步骤,实现向student表中插入一条数据。

1、注册驱动

2 、获取数据库连接对象

3、获取发送SQL语句对象

4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法

错误,这里sid是自增长,所以不需要写

5、执行SQL语句

DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响

的行数(int类型)

6、处理结果,如果返回的受影响行数不为0,说明数据插入成功

 7、释放资源,遵循“先开后关,后开先关”的原则

二.综合上述7个步骤,实现根据学号sid删除数据库表中一条数据。

三.综合上述7个步骤,实现根据学号sid删除数据库表中一条数据。

四.结果集

4.1接受结果集

 4.2.遍历ResultSet结果集中的数据



👌 棒棒有言:生活不可能一帆风顺,总会有波折,总会有险阻。生活是个爱开玩笑的孩子,也许今天给你所有,明天又会让你一无所有,无需烦恼,该来的总会来,再黑的夜晚也会有黎明到来的那一刻。不管生活有多么曲折,只要拥有幸福的态度就能挺过漫漫长夜,就能迎来美好的明天。

👌 本章简介:JDBC(Java Data Base Connectivity,java数据库连接),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。

简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。

👍  作者:get棒棒给个关注呗

👍  重要:请给个关注哦!
 

一.综合上述7个步骤,实现向student表中插入一条数据。

1、注册驱动

2 、获取数据库连接对象

3、获取发送SQL语句对象

4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法

错误,这里sid是自增长,所以不需要写

5、执行SQL语句

DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响

的行数(int类型)

6、处理结果,如果返回的受影响行数不为0,说明数据插入成功

 7、释放资源,遵循“先开后关,后开先关”的原则

package com.cxyzxc.www.examples01;

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

/**
 * JDBC连接数据 实现向数据库jdbcdatabase里student表中插入一条数据
 * 
 * @author 程序员张小厨
 * 
 */
public class Jdbc01InsertStudent {

	public static void main(String[] args) {
		Connection connection = null;
		Statement statement = null;

		try {
			// 1、注册驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2 、获取数据库连接对象
			String url = "jdbc:mysql://127.0.0.1:3306/jdbcdatabase";
			String user = "root";
			String password = "123456";
			connection = DriverManager.getConnection(url, user, password);

			// 3、获取发送SQL语句对象
			statement = connection.createStatement();

			// 4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误,这里sid是自增长,所以不需要写
			String sql = "INSERT  INTO `student`(`name`,`age`,`gender`,`phone`,`identitycard`,`address`) VALUES ('王五',21,'男','13825869876','340825200109151928','安徽合肥包河区');";

			// 5、执行SQL语句
			// DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响的行数(int类型)
			// DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集(ResultSet类型)
			int result = statement.executeUpdate(sql);

			// 6、处理结果,如果返回的受影响行数不为0,说明数据插入成功
			if (result != 0) {
				System.out.println("数据插入成功");
			} else {
				System.out.println("数据插入失败");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 7、释放资源,遵循“先开后关,后开先关”的原则
			if (connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

			if (statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

		}

	}

}

二.综合上述7个步骤,实现根据学号sid删除数据库表中一条数据。

1、注册驱动

2 、获取数据库连接对象

3、获取发送SQL语句对象

4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法

错误

 5、执行SQL语句

DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响

的行数(int类型)DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集

(ResultSet类型)

6、处理结果,如果返回的受影响行数不为0,说明数据删除成功

7、释放资源,遵循“先开后关,后开先关”的原则

package com.cxyzxc.www.examples01;

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

/**
 * JDBC连接数据 实现删除数据库jdbcdatabase里student表中的一条数据
 * 
 * @author 程序员张小厨
 * 
 */
public class Jdbc02DeleteStudent {

	public static void main(String[] args) {
		Connection connection = null;
		Statement statement = null;

		try {
			// 1、注册驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2 、获取数据库连接对象
			String url = "jdbc:mysql://127.0.0.1:3306/jdbcdatabase";
			String user = "root";
			String password = "123456";
			connection = DriverManager.getConnection(url, user, password);

			// 3、获取发送SQL语句对象
			statement = connection.createStatement();

			// 4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误
			String sql = "DELETE FROM `student` WHERE `sid` = 1003;";

			// 5、执行SQL语句
			// DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响的行数(int类型)
			// DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集(ResultSet类型)
			int result = statement.executeUpdate(sql);

			// 6、处理结果,如果返回的受影响行数不为0,说明数据删除成功
			if (result != 0) {
				System.out.println("数据删除成功");
			} else {
				System.out.println("数据删除失败");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 7、释放资源,遵循“先开后关,后开先关”的原则
			if (connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

			if (statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

		}

	}

}

三.综合上述7个步骤,实现根据学号sid删除数据库表中一条数据。

1、注册驱动

2 、获取数据库连接对象

3、获取发送SQL语句对象

4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法

错误

 5、执行SQL语句

DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响

的行数(int类型)DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集

(ResultSet类型)

6、处理结果,如果返回的受影响行数不为0,说明数据删除成功

7、释放资源,遵循“先开后关,后开先关”的原则

package com.cxyzxc.www.examples01;

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

/**
 * JDBC连接数据 实现修改数据库jdbcdatabase里student表中的一条数据
 * 
 * @author 程序员张小厨
 * 
 */
public class Jdbc03UpdateStudent {

	public static void main(String[] args) {
		Connection connection = null;
		Statement statement = null;

		try {
			// 1、注册驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2 、获取数据库连接对象
			String url = "jdbc:mysql://127.0.0.1:3306/jdbcdatabase";
			String user = "root";
			String password = "123456";
			connection = DriverManager.getConnection(url, user, password);

			// 3、获取发送SQL语句对象
			statement = connection.createStatement();

			// 4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误
			String sql = "UPDATE `student` SET `name`='李红',`age`=19,`gender`='女',`phone`='13111223344',`identitycard`='340825200308151936',`address`='安徽合肥高新区' WHERE `sid`=1002;";

			// 5、执行SQL语句
			// DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响的行数(int类型)
			// DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集(ResultSet类型)
			int result = statement.executeUpdate(sql);

			// 6、处理结果,如果返回的受影响行数不为0,说明数据修改成功
			if (result != 0) {
				System.out.println("数据修改成功");
			} else {
				System.out.println("数据修改失败");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 7、释放资源,遵循“先开后关,后开先关”的原则
			if (connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

			if (statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

		}

	}

}

四.结果集

JDBC中执行DQL查询语句后,使用ResultSet存放查询到的结果集数据。

4.1接受结果集

ResultSet resultSet = statement.executeQuery(String sql);

1、注册驱动

2 、获取数据库连接对象

3、获取发送SQL语句对象

4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法

错误String sql = "SELECT * FROM `student` WHERE `sid`= 1002;";

 5、执行SQL语句

// DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影

响的行数(int类型) DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集

(ResultSet类型)ResultSet resultSet = statement.executeQuery(sql); 

 4.2.遍历ResultSet结果集中的数据

ResultSet以表(table)结构进行临时结果的存储,需要通过JDBC API将其中的数据依次获取。

数据行指针:初始位置在第一行数据前,每调用一次boolean next()方法ResultSet的指针向下移动

一行,结果为true,表示当前行有数据。 

*resultSet.getXxx(int columnIndex):根据字段的索引顺序获取表中字段的数据,索引从1开 始,

Xxx表示字段类型 

*resultSet.getXxx(String columnLabel):根据字段的名称获取表中字段的数据。

 6、处理结果,对返回的resultSet结果集进行处理,需要将结果集中的数据取出来

 查询一条数据时,使用if判断resultSet.next()为true,说明resultSet结果集中有一条数据,

如果resultSet.next()为false,说明resultSet结果集中没有数据。

查询所有数据时,使用while循环判断resultSet.next()为true,说明resultSet结果集中还有

一条数据,如果resultSet.next()为false,说明resultSet结果集中没有数据了。

查询一条数据,根据记录中字段的索引获取字段数据

if (resultSet.next()) {
	//根据记录中字段的索引获取字段数据,字段索引从1开始
	int sid = resultSet.getInt(1);
	String name = resultSet.getString(2);
	int age = resultSet.getInt(3);
	String gender = resultSet.getString(4);
	String phone = resultSet.getString(5);
	String identitycard = resultSet.getString(6);
	String address = resultSet.getString(7);
	System.out.println(sid + "-" + name + "-" + age + "-" + gender+ "-" + phone + "-" + identitycard + "-" + address);
}

查询一条数据,根据记录中字段的名称获取字段数据

if (resultSet.next()) {
	//根据记录中字段的名称获取字段数据
	int sid = resultSet.getInt("sid");
	String name = resultSet.getString("name");
	int age = resultSet.getInt("age");
	String gender = resultSet.getString("gender");
	String phone = resultSet.getString("phone");
	String identitycard = resultSet.getString("identitycard");
	String address = resultSet.getString("address");
	System.out.println(sid + "-" + name + "-" + age + "-" + gender+ "-" + phone + "-" + identitycard + "-" + address);
}

查询所有数据,根据记录中字段的索引获取字段数据

while (resultSet.next()) {
	//根据记录中字段的索引获取字段数据,字段索引从1开始
	int sid = resultSet.getInt(1);
	String name = resultSet.getString(2);
	int age = resultSet.getInt(3);
	String gender = resultSet.getString(4);
	String phone = resultSet.getString(5);
	String identitycard = resultSet.getString(6);
	String address = resultSet.getString(7);
	System.out.println(sid + "-" + name + "-" + age + "-" + gender+ "-" + phone + "-" + identitycard + "-" + address);
}

查询所有数据,根据记录中字段的名称获取字段数据

while (resultSet.next()) {
	//根据记录中字段的名称获取字段数据
	int sid = resultSet.getInt("sid");
	String name = resultSet.getString("name");
	int age = resultSet.getInt("age");
	String gender = resultSet.getString("gender");
	String phone = resultSet.getString("phone");
	String identitycard = resultSet.getString("identitycard");
	String address = resultSet.getString("address");
	System.out.println(sid + "-" + name + "-" + age + "-" + gender+ "-" + phone + "-" + identitycard + "-" + address);
}

  • 13
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

get棒棒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值