失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何用eclipse操作MySQL数据库进行增删改查?

如何用eclipse操作MySQL数据库进行增删改查?

时间:2024-02-21 20:38:30

相关推荐

如何用eclipse操作MySQL数据库进行增删改查?

我们首先需要在Navicat Premium上创建一个数据库实例(test),然后创建一个stu_info表(id,name,mobile,address)

接着创建一个Test类进行操作:

在这之前需要导一个包:这个包可以在网上找到,连接MySQL数据库用于加载驱动的

mysql-connector-java-5.1.44-bin.jar

我们先来看看如何添加数据

package jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class Test {public static void main(String[] args) {Connection connection = null;Statement statement = null;try {Class.forName("com.mysql.jdbc.Driver");//加载驱动,此处会出现检查时异常,所以需要抛出或捕获String url = "jdbc:mysql://127.0.0.1:3306/test";//指定连接哪一台计算机上的哪个数据库实例connection = DriverManager.getConnection(url, "root", "root");//获取数据库的连接对象(用户名和密码因人或机器而异),//并返回Connection对象,//你可以想象成C语言中打开文件statement = connection.createStatement();//创建SQL语句,String sql = "insert into stu_info(id,name,mobile,address) values ('','张三','182','郑州市') ";int affect = statement.executeUpdate(sql);//执行SQL语句,并返回影响的行数,//但仅限用于insert(添加)、update(修改)、delete(删除),不包括select(查询)//显示出执行的效果if(affect>0) {//因为上一语句若执行成功,则影响的行数肯定>0System.out.println("执行成功");}else {//否则肯定为0System.out.println("执行失败");}/*** 我们知道在C语言中打开一个文件,在执行完诸如读写添加修改等操作后,要及时把打开的文件再关上,以防文件的数据丢失等错误;* 同样的,在Java中先连接数据库,执行完操作后也要及时释放资源(即断掉链接),而断掉连接就用close;*///connection.close(); //但关闭操作放在这里不合适,原因是如果上面的语句有异常(例如sql语句语法出错),//statement.close(); //则下面的语句无法再执行,资源就得不到释放,就有可能会出问题,//为解决这个问题,就需用到finally语句(无论是否有异常都会执行)} catch (Exception e) {e.printStackTrace();} finally {//释放connection资源try {if (connection != null) {/*此处之所以要用if语句,是因为怕上面出现异常导致connection为null,会出现空指针异常(你可以理解成C语言中文件打开错误,也就是压根没有打开,所以也就不用关闭了)*/connection.close();//此处也会出现检查时异常,所以需要捕获}} catch (SQLException e) {e.printStackTrace();}//释放statement资源try {if (statement != null) {//原因同上statement.close();}} catch (SQLException e) {e.printStackTrace();}}}}

此时执行结果为:执行成功

再打开Navicat Premium中的stu_info表,刷新一下就可看到添加的数据了

我们再来看看如何修改数据

其实跟上面的步骤几乎一模一样,只需改动一下sql语句,将其改为

String sql = "update stu_info set mobile='123456',address='郑州市中原区' where name='张三'";

其中set mobile='123456',address='郑州市中原区'是传入新数据从而覆盖旧数据,而where name='张三'是指定修改哪一行数据

此时,再打开stu_info表,可以看到修改后的数据:

还有删除数据,跟上面的仍旧一样,仍只需改动一下sql语句,将其改为

String sql = "delete from stu_info where name='张三'";

其中where name='张三'是指定删除哪一行数据,若没有where,则删除stu_info表中的所有数据

因为本来表中只有一行数据,所以删除之后就没有了:

此时你是否会发现上面的代码除了sql不一样,也就是具体的操作不同之外,其他地方具有高度一致性,也就是重复的很多,显得冗余繁杂,所以为了简化代码,我们可以可以单独定义一个方法,将sql当成一个参数变量,并将该方法放到一个类中:

package jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class DBLink {public boolean update(String sql) {//将实参传给形参sqlConnection connection= null;Statement statement =null;try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://127.0.0.1/test";connection = DriverManager.getConnection(url, "root", "root");statement = connection.createStatement();int affect = statement.executeUpdate(sql);return affect>0;//若执行成功,则返回true/*** 这里我想说明一下,由于finally的特殊性,会先执行完finally里的释放资源语句,再执行返回值语句* 总之就是在结束方法之前无论如何都要先释放资源才可以*/} catch (Exception e) {e.printStackTrace();} finally {//释放statement资源try {if (statement != null) {statement.close();}} catch (SQLException e) {e.printStackTrace();}//释放connection资源try {if (connection != null) {connection.close();}} catch (SQLException e) {e.printStackTrace();}}return false; //执行不成功,则返回false}}

再来调用该通用方法:

package jdbc;public class Test {//添加public static void insert() {String sql = "insert into stu_info(id,name,mobile,address) values ('','张三','182','郑州市')";if(new DBLink().update(sql)) {//调用DBLink方法,并传入实参System.out.println("添加成功");return;}System.out.println("添加失败");}//修改public static void update() {String sql = "update stu_info set name = '李四' where mobile = '182'";if(new DBLink().update(sql)) {System.out.println("修改成功");return;}System.out.println("修改失败");}//删除public static void delete() {String sql = "delete from stu_info where address = '郑州市'";if(new DBLink().update(sql)) {System.out.println("删除成功");return;}System.out.println("删除失败");}//调用各个操作方法public static void main(String[] args) {insert();//update();//delete();}}

至于为啥要把查询数据另说,是因为查询数据所用的方法跟其他三种略有不同,它用的不是statement.executeUpdate(),而是statement.executeQuery(),其他的地方大同小异:

我们直接通过定义一个查询方法(select())来进行说明

public static void select() {Connection connection = null;//initialize variable(初始化变量为null)Statement statement = null;ResultSet resultset = null;try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://127.0.0.1:3306/test";connection = DriverManager.getConnection(url, "root", "root");statement = connection.createStatement();//创建SQL语句对象String sql = "select id,name,mobile,address from stu_info";resultset = statement.executeQuery(sql);//执行SQL语句//此时数据都在resultset里面,需要通过循环把它显示出来while(resultset.next()) {//next方法移动“指针”至一行数据,该行有数据则返回true,没有数据则返回false//你可以理解成C语言中的指针下移一位//查询数据String id = resultset.getString("id");String name = resultset.getString("name");String mobile = resultset.getString("mobile");String address = resultset.getString("address");System.out.println(id+","+name+","+mobile+","+address);}} catch (Exception e) {e.printStackTrace();} finally {//释放resultset资源 (你可以理解成C语言中关闭文件,让指针不在指向该文件)try {if (resultset != null) {resultset.close();}} catch (SQLException e) {e.printStackTrace();}//释放connection资源try {if (connection != null) {connection.close();}} catch (SQLException e) {e.printStackTrace();}//释放statement资源try {if (statement != null) {statement.close();}} catch (SQLException e) {e.printStackTrace();}}}

总结一下:

- 这次的重点就是如何连接MySQL数据库、以及如何简单的操作MySQL数据库实例!

如果觉得《如何用eclipse操作MySQL数据库进行增删改查?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。