如何⽤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("sql.jdbc.Driver");//加载驱动,此处会出现检查时异常,所以需要抛出或捕获
String url ="jdbc:mysql://127.0.0.1:3306/test";//指定连接哪⼀台计算机上的哪个数据库实例
connection = Connection(url,"root","root");//获取数据库的连接对象(⽤户名和密码因⼈或机器⽽异),//并返回Connection对象,
//你可以想象成C语⾔中打开⽂件
statement = ateStatement();//创建SQL语句,
String sql ="insert into stu_info(id,name,mobile,address) values ('2016','张三','182','郑州市') ";
int affect = uteUpdate(sql);//执⾏SQL语句,并返回影响的⾏数,
//但仅限⽤于insert(添加)、update(修改)、delete(删除),不包括select(查询)
//显⽰出执⾏的效果
if(affect>0){//因为上⼀语句若执⾏成功,则影响的⾏数肯定>0
System.out.println("执⾏成功");
}else{//否则肯定为0
System.out.println("执⾏失败");
}
/**
* 我们知道在C语⾔中打开⼀个⽂件,在执⾏完诸如读写添加修改等操作后,要及时把打开的⽂件再关上,以防⽂件的数据丢失等错误;
tableborder意思* 同样的,在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{
php源代码解密工具if(statement != null){//原因同上
statement.close();
}
}catch(SQLException e){
e.printStackTrace();
sql语句汇总}
}
}
}
此时执⾏结果为:执⾏成功
再打开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当成⼀个参数变量,并将该⽅法放到⼀个类中:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DBLink {
public boolean update(String sql){//将实参传给形参sql
Connection connection= null;
Statement statement =null;
try{
Class.forName("sql.jdbc.Driver");
String url ="jdbc:mysql://127.0.0.1/test";
connection = Connection(url,"root","root");
statement = ateStatement();
int affect = uteUpdate(sql);
return affect>0;//若执⾏成功,则返回true
/**
* 这⾥我想说明⼀下,由于finally的特殊性,会先执⾏完finally⾥的释放资源语句,再执⾏返回值语句  * 总之就是在结束⽅法之前⽆论如何都要先释放资源才可以
*/
}catch(Exception e){
e.printStackTrace();
}finally{
//释放statement资源
try{
if(statement != null){
statement.close();
}
}catch(SQLException e){sumif和sum区别
e.printStackTrace();
}
//释放connection资源
try{
if(connection != null){
connection.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
return false;//执⾏不成功,则返回false
}
}
再来调⽤该通⽤⽅法:
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⽅法,并传⼊实参
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(){mysql菜鸟教程增删改查
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();
}
}
⾄于为啥要把查询数据另说,是因为查询数据所⽤的⽅法跟其他三种略有不同,它⽤的不是uteUpdate(),⽽是uteQuery(),其他的地⽅⼤同⼩异:
我们直接通过定义⼀个查询⽅法(select())来进⾏说明
public static void select(){
Connection connection = null;//initialize variable(初始化变量为null)
Statement statement = null;
ResultSet resultset = null;
try{
Class.forName("sql.jdbc.Driver");
String url ="jdbc:mysql://127.0.0.1:3306/test";
connection = Connection(url,"root","root");
statement = ateStatement();//创建SQL语句对象
String sql ="select id,name,mobile,address from stu_info";
resultset = uteQuery(sql);//执⾏SQL语句
//此时数据都在resultset⾥⾯,需要通过循环把它显⽰出来
()){//next⽅法移动“指针”⾄⼀⾏数据,该⾏有数据则返回true,没有数据则返回false //你可以理解成C语⾔中的指针下移⼀位
//查询数据
String id = String("id");
String name = String("name");
String mobile = String("mobile");
String address = String("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数据库实例!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。