2023年8月3日发(作者:)
如何⽤eclipse操作MySQL数据库进⾏增删改查?我们⾸先需要在Navicat Premium上创建⼀个数据库实例(test),然后创建⼀个stu_info表(id,name,mobile,address)接着创建⼀个Test类进⾏操作:在这之前需要导⼀个包:这个包可以在⽹上找到,连接MySQL数据库⽤于加载驱动的我们先来看看如何添加数据:package jdbc;import tion;import Manager;import eption;import ent;public class Test { public static void main(String[] args) { Connection connection = null; Statement statement = null; try { e("");//加载驱动,此处会出现检查时异常,所以需要抛出或捕获 String url = "jdbc:mysql://127.0.0.1:3306/test";//指定连接哪⼀台计算机上的哪个数据库实例 connection = nection(url, "root", "root");//获取数据库的连接对象(⽤户名和密码因⼈或机器⽽异), //并返回Connection对象, //你可以想象成C语⾔中打开⽂件 statement = Statement();//创建SQL语句, String sql = "insert into stu_info(id,name,mobile,address) values ('2016','张三','182','郑州市') "; int affect = eUpdate(sql);//执⾏SQL语句,并返回影响的⾏数, //但仅限⽤于insert(添加)、update(修改)、delete(删除),不包括select(查询)
//显⽰出执⾏的效果 if(affect>0) {//因为上⼀语句若执⾏成功,则影响的⾏数肯定>0 n("执⾏成功"); }else { //否则肯定为0 n("执⾏失败"); }
/** *
我们知道在C语⾔中打开⼀个⽂件,在执⾏完诸如读写添加修改等操作后,要及时把打开的⽂件再关上,以防⽂件的数据丢失等错误; *
同样的,在Java中先连接数据库,执⾏完操作后也要及时释放资源(即断掉链接),⽽断掉连接就⽤close; */// (); //但关闭操作放在这⾥不合适,原因是如果上⾯的语句有异常(例如sql语句语法出错),// (); //则下⾯的语句⽆法再执⾏,资源就得不到释放,就有可能会出问题, //为解决这个问题,就需⽤到finally语句(⽆论是否有异常都会执⾏)
} catch (Exception e) { tackTrace(); } finally {
//释放connection资源 try { if (connection != null) {/*此处之所以要⽤if语句,是因为怕上⾯出现异常导致connection为null,会出现空指针异常
(你可以理解成C语⾔中⽂件打开错误,也就是压根没有打开,所以也就不⽤关闭了)*/ ();//此处也会出现检查时异常,所以需要捕获 } } catch (SQLException e) { tackTrace(); }
//释放statement资源 try { if (statement != null) {//原因同上 (); } } catch (SQLException e) { tackTrace(); }
}
}}此时执⾏结果为:执⾏成功再打开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 tion;import Manager;import eption;import ent;public class DBLink { public boolean update(String sql) {//将实参传给形参sql Connection connection= null; Statement statement =null; try { e(""); String url = "jdbc:mysql://127.0.0.1/test"; connection = nection(url, "root", "root"); statement = Statement(); int affect = eUpdate(sql); return affect>0;//若执⾏成功,则返回true /** *
这⾥我想说明⼀下,由于finally的特殊性,会先执⾏完finally⾥的释放资源语句,再执⾏返回值语句 *
总之就是在结束⽅法之前⽆论如何都要先释放资源才可以 */
} catch (Exception e) { tackTrace(); } finally { //释放statement资源 try { if (statement != null) { (); } } catch (SQLException e) { tackTrace(); } //释放connection资源 try { if (connection != null) { (); } } catch (SQLException e) { tackTrace(); } } return false; //执⾏不成功,则返回false }}再来调⽤该通⽤⽅法:package jdbc;public class Test { //添加 public static void insert() { String sql = "insert into stu_info(id,name,mobile,address) values ('2016','张三','182','郑州市')"; if(new DBLink().update(sql)) {//调⽤DBLink⽅法,并传⼊实参 n("添加成功"); return; } n("添加失败"); }
//修改 public static void update() { String sql = "update stu_info set name = '李四' where mobile = '182'";
if(new DBLink().update(sql)) { n("修改成功"); return; } n("修改失败"); }
//删除 public static void delete() { String sql = "delete from stu_info where address = '郑州市'";
if(new DBLink().update(sql)) { n("删除成功"); return; } n("删除失败");
}
//调⽤各个操作⽅法 public static void main(String[] args) { insert();// update();// delete(); }}⾄于为啥要把查询数据另说,是因为查询数据所⽤的⽅法跟其他三种略有不同,它⽤的不是eUpdate(),⽽是eQuery(),其他的地⽅⼤同⼩异:我们直接通过定义⼀个查询⽅法(select())来进⾏说明public static void select() { Connection connection = null;//initialize variable(初始化变量为null) Statement statement = null; ResultSet resultset = null; try { e(""); String url = "jdbc:mysql://127.0.0.1:3306/test"; connection = nection(url, "root", "root"); statement = Statement();//创建SQL语句对象 String sql = "select id,name,mobile,address from stu_info"; resultset = eQuery(sql);//执⾏SQL语句
//此时数据都在resultset⾥⾯,需要通过循环把它显⽰出来
while(()) {//next⽅法移动“指针”⾄⼀⾏数据,该⾏有数据则返回true,没有数据则返回false //你可以理解成C语⾔中的指针下移⼀位
//查询数据 String id = ing("id"); String name = ing("name"); String mobile = ing("mobile");
String address = ing("address"); n(id+","+name+","+mobile+","+address);
} } catch (Exception e) { tackTrace(); } finally { //释放resultset资源
(你可以理解成C语⾔中关闭⽂件,让指针不在指向该⽂件) try { if (resultset != null) { (); } } catch (SQLException e) { tackTrace(); } //释放connection资源 try { if (connection != null) { (); } } catch (SQLException e) { tackTrace(); } //释放statement资源 try { if (statement != null) { (); } } catch (SQLException e) { tackTrace(); } }
}总结⼀下:- 这次的重点就是如何连接MySQL数据库、以及如何简单的操作MySQL数据库实例!
2023年8月3日发(作者:)
如何⽤eclipse操作MySQL数据库进⾏增删改查?我们⾸先需要在Navicat Premium上创建⼀个数据库实例(test),然后创建⼀个stu_info表(id,name,mobile,address)接着创建⼀个Test类进⾏操作:在这之前需要导⼀个包:这个包可以在⽹上找到,连接MySQL数据库⽤于加载驱动的我们先来看看如何添加数据:package jdbc;import tion;import Manager;import eption;import ent;public class Test { public static void main(String[] args) { Connection connection = null; Statement statement = null; try { e("");//加载驱动,此处会出现检查时异常,所以需要抛出或捕获 String url = "jdbc:mysql://127.0.0.1:3306/test";//指定连接哪⼀台计算机上的哪个数据库实例 connection = nection(url, "root", "root");//获取数据库的连接对象(⽤户名和密码因⼈或机器⽽异), //并返回Connection对象, //你可以想象成C语⾔中打开⽂件 statement = Statement();//创建SQL语句, String sql = "insert into stu_info(id,name,mobile,address) values ('2016','张三','182','郑州市') "; int affect = eUpdate(sql);//执⾏SQL语句,并返回影响的⾏数, //但仅限⽤于insert(添加)、update(修改)、delete(删除),不包括select(查询)
//显⽰出执⾏的效果 if(affect>0) {//因为上⼀语句若执⾏成功,则影响的⾏数肯定>0 n("执⾏成功"); }else { //否则肯定为0 n("执⾏失败"); }
/** *
我们知道在C语⾔中打开⼀个⽂件,在执⾏完诸如读写添加修改等操作后,要及时把打开的⽂件再关上,以防⽂件的数据丢失等错误; *
同样的,在Java中先连接数据库,执⾏完操作后也要及时释放资源(即断掉链接),⽽断掉连接就⽤close; */// (); //但关闭操作放在这⾥不合适,原因是如果上⾯的语句有异常(例如sql语句语法出错),// (); //则下⾯的语句⽆法再执⾏,资源就得不到释放,就有可能会出问题, //为解决这个问题,就需⽤到finally语句(⽆论是否有异常都会执⾏)
} catch (Exception e) { tackTrace(); } finally {
//释放connection资源 try { if (connection != null) {/*此处之所以要⽤if语句,是因为怕上⾯出现异常导致connection为null,会出现空指针异常
(你可以理解成C语⾔中⽂件打开错误,也就是压根没有打开,所以也就不⽤关闭了)*/ ();//此处也会出现检查时异常,所以需要捕获 } } catch (SQLException e) { tackTrace(); }
//释放statement资源 try { if (statement != null) {//原因同上 (); } } catch (SQLException e) { tackTrace(); }
}
}}此时执⾏结果为:执⾏成功再打开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 tion;import Manager;import eption;import ent;public class DBLink { public boolean update(String sql) {//将实参传给形参sql Connection connection= null; Statement statement =null; try { e(""); String url = "jdbc:mysql://127.0.0.1/test"; connection = nection(url, "root", "root"); statement = Statement(); int affect = eUpdate(sql); return affect>0;//若执⾏成功,则返回true /** *
这⾥我想说明⼀下,由于finally的特殊性,会先执⾏完finally⾥的释放资源语句,再执⾏返回值语句 *
总之就是在结束⽅法之前⽆论如何都要先释放资源才可以 */
} catch (Exception e) { tackTrace(); } finally { //释放statement资源 try { if (statement != null) { (); } } catch (SQLException e) { tackTrace(); } //释放connection资源 try { if (connection != null) { (); } } catch (SQLException e) { tackTrace(); } } return false; //执⾏不成功,则返回false }}再来调⽤该通⽤⽅法:package jdbc;public class Test { //添加 public static void insert() { String sql = "insert into stu_info(id,name,mobile,address) values ('2016','张三','182','郑州市')"; if(new DBLink().update(sql)) {//调⽤DBLink⽅法,并传⼊实参 n("添加成功"); return; } n("添加失败"); }
//修改 public static void update() { String sql = "update stu_info set name = '李四' where mobile = '182'";
if(new DBLink().update(sql)) { n("修改成功"); return; } n("修改失败"); }
//删除 public static void delete() { String sql = "delete from stu_info where address = '郑州市'";
if(new DBLink().update(sql)) { n("删除成功"); return; } n("删除失败");
}
//调⽤各个操作⽅法 public static void main(String[] args) { insert();// update();// delete(); }}⾄于为啥要把查询数据另说,是因为查询数据所⽤的⽅法跟其他三种略有不同,它⽤的不是eUpdate(),⽽是eQuery(),其他的地⽅⼤同⼩异:我们直接通过定义⼀个查询⽅法(select())来进⾏说明public static void select() { Connection connection = null;//initialize variable(初始化变量为null) Statement statement = null; ResultSet resultset = null; try { e(""); String url = "jdbc:mysql://127.0.0.1:3306/test"; connection = nection(url, "root", "root"); statement = Statement();//创建SQL语句对象 String sql = "select id,name,mobile,address from stu_info"; resultset = eQuery(sql);//执⾏SQL语句
//此时数据都在resultset⾥⾯,需要通过循环把它显⽰出来
while(()) {//next⽅法移动“指针”⾄⼀⾏数据,该⾏有数据则返回true,没有数据则返回false //你可以理解成C语⾔中的指针下移⼀位
//查询数据 String id = ing("id"); String name = ing("name"); String mobile = ing("mobile");
String address = ing("address"); n(id+","+name+","+mobile+","+address);
} } catch (Exception e) { tackTrace(); } finally { //释放resultset资源
(你可以理解成C语⾔中关闭⽂件,让指针不在指向该⽂件) try { if (resultset != null) { (); } } catch (SQLException e) { tackTrace(); } //释放connection资源 try { if (connection != null) { (); } } catch (SQLException e) { tackTrace(); } //释放statement资源 try { if (statement != null) { (); } } catch (SQLException e) { tackTrace(); } }
}总结⼀下:- 这次的重点就是如何连接MySQL数据库、以及如何简单的操作MySQL数据库实例!
发布评论