JAVA(JDBC)连接mysql数据库,并进行一些简单操作(超详细)

一、需要用到的工具:
(1)本文使用的编译器是idea,下载链接,建议用迅雷下载:
https://download.jetbrains.com.cn/idea/ideaIU-2021.1.1.exe
提示:下载的软件刚开始免费试用30天之后需要收费,这里对于如何免费使用此软件,不再赘述,请自行百度。建议使用跟我一样的编译器操作
(2)使用的数据库是mysql数据库,百度网盘链接
https://pan.baidu.com/s/159uDdczQW_LvRtnYwYkuWA
提取码:aa8e
(3)还需要mysql驱动:
链接:https://pan.baidu.com/s/1TsXIIZg_elgW7SGonsSj_A
提取码:evjd
提醒一下,如果之前有自己装过mysql数据库的话,这里的建议是:卸载,因为每个人的情况不同,如果你出问题了,我也无法给出解决方案。这里附带一个卸载软件吧geek:卸载完后要重启!!!别忘了
链接:https://pan.baidu.com/s/15XvbokNa_QTtq0pQMagDhw
提取码:mhri
该软件打开即用,无需安装,在geek里找到mysql在这里插入图片描述
,然后右键选择卸载,卸载完后,这个软件会自动查找遗留在注册表的残留,稍微等等,然后选择删除就行()在这里插入图片描述

二、环境配置:

1.安装idea编辑器并配置环境:
刚开始一路next就行了,注意选择安装的位置,别再当c盘战士了。。。。:
在这里插入图片描述
这里跟我一样选:
在这里插入图片描述
然后一路next,等他安装好,然后打开,接下来就是同意协议什么的。。。
在这里插入图片描述
选择dont send
在这里插入图片描述
选择试用:
在这里插入图片描述
直接new project
在这里插入图片描述
然后就到了下面的界面,咱们要创建的时java project,但是idea没有设置对应的jdk,咱们需要自己弄
在这里插入图片描述
点击那个小箭头,就会看见如下选项,这里直接选择download jdk,
这里说明一下,
然后会看见如下选项,这里直接点击download就行了,等待他下载完后,继续点击next:
在这里插入图片描述
在这里插入图片描述
给你的项目起个名字:
在这里插入图片描述
界面大概是这样的:
在这里插入图片描述
接下来创建一个package,鼠标点击src,然后鼠标右键点击,选择new,会出现下图这样的,然后选择package,并起个名字,这里我名字是test

在这里插入图片描述
在这里插入图片描述
接下来在test这个package里面创建一个java文件,操作跟刚刚类似,鼠标点击test,然后鼠标右键点击,选择new,然后选择java class,并起个名字,这里我名字是ttt,然后按回车就行
在这里插入图片描述
最终大概就是这样的,要运行的话,鼠标右键,然后选择运行就行,或者ctrl+shift+F10:
在这里插入图片描述
idea基本操作就是这样了,idea有很多非常方便的功能,这里就不一一赘述了。

2.导入mysql驱动(mysql jar包),在这里插入图片描述
点击file-----点击project structure,出现类似如下界面(咱们可能不一样):
在这里插入图片描述
选择左边一栏的Libraries,然后点那个+,选择java
在这里插入图片描述在这里插入图片描述
这时候选择刚刚下载的MySql Connector Java 5.1.23目录下的jar文件,然后点击ok即可:
在这里插入图片描述
在这里插入图片描述
然后继续点击ok,这时你会看见左边的一栏里出现了刚刚导入的包
在这里插入图片描述
这就证明导入成功了。

3.接下来我们安装mysql数据库,打开安装包,刚开始没什么好说的,next就行,然后到这一步,要选择typical,然后install,安装过程中会出现广告(就是这个公司推荐他们enterprise版本。不用管点击next就行)
在这里插入图片描述
点击finish,然后会进入设置界面(这是最重要的一部分)
在这里插入图片描述
点击next
在这里插入图片描述
跟下图选一样的,然后next
在这里插入图片描述
跟下图选一样的,选择第一个,然后next
在这里插入图片描述
跟下图选一样的,然后next
在这里插入图片描述
继续next
在这里插入图片描述
继续next
在这里插入图片描述
下图,这个地方是设置你的端口,默认为3306,一般情况不修改,如果你要修改的话,要记住自己的端口号,
然后next

在这里插入图片描述
下面这一步非常重要,跟我选一样的,一定要看清楚,选最后一个,选择的是utf-8:弄完后点击next
在这里插入图片描述
下面也是跟我选一样的,然后next:
在这里插入图片描述
下面是设置root用户的密码,我这里设置的是333,这里要激活root用户的远程访问,方便其他的数据库管理工具远程访问
在这里插入图片描述
出现下图表示安装成功:
在这里插入图片描述
成功:
在这里插入图片描述

三、JDBC数据库连接:
JDBC编程大致分为这六步(其实没什么难得,就是套模板):
1.注册驱动(告诉java程序,即将要连接的是哪个品牌的数据库)class.forname(“com.sql.jdbc.”)
2.获取连接(表示JVM进程和数据库进程之间的通道打开了,使用完之后要关闭通道)Connection conn = DriverManager.getConection()
3.获取数据库操作对象(专门执行SQL语句的对象)
Statement stat = conn.getStatement
4.执行SQL语句(DQL,DML。。)
5.处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集)
6.释放资源(使用完资源后,一定要关闭资源,java和数据库之间属于进程间的通信)
下面这段代码就是模板了,你完全可以把下面的代码,直接copy到你的代码里,然后修改相应的东西就行了

        Connection conn = null;
        Statement stat = null;
        ResultSet rset = null;
  try {
            Class.forName("com.mysql.jdbc.Driver");//注册驱动
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","333");
            //连接驱动,这里在连接数据库的时候需要注意了,需要将3306改为你自己的端口,
            //后面的两个参数分别	  是登录数据库的用户名和密码,要改成你自己的。
            //如果你一直在跟我照做的话,就不用设置了                                                                                                   
            stat = conn.createStatement();//获取数据库操作对象
            String sql = "你想要执行的sql语句";
            rset = stat.executeQuery(sql);//这个时候就获取到了数据库的查询结果集,
            						      //然后就可以查询了,稍后我会再做讲解

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
          
            if(stat!=null)
            {
                try {
                    stat.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(rset!=null)
            {
                try{
                    rset.close();
                }catch(SQLException e)
                {
                    e.printStackTrace();
                }
            }
        }

四:数据库操作,
table长这样:
在这里插入图片描述

例1、获取员工工资最小值:

public String Min() throws EmptyException {
        String rest="";
        try {
            stat = conn.createStatement("select * from emp where sal=(select min(sal) from emp);");   
//执行对应的sql语句
            resultSet = stat .executeQuery();//获得查询结果集
            ResultSetMetaData  resultSetMetaData = resultSet.getMetaData();//通过查询结果集获得数据
            int column = resultSetMetaData.getColumnCount();//得到获取的数据有多少列(多少个属性),方便遍历
            if(resultSet.next())   //这个地方其实也是模板,记住就好
            {
                for(int i=1;i<=column;i++)
                {
                    String s = resultSetMetaData.getColumnName(i);  //得到对应的行的数据
                    if(s.equals("No"))s="工号";
                    if(s.equals("Name"))s="姓名";
                    if(s.equals("Birthday"))s="出生日期";
                    if(s.equals("Email"))s="Email";
                    if(s.equals("Sal"))s="工资";
                    rest+=s+":"+resultSet.getString(i)+"\n";
                }
            }
            if(rest.equals(""))
            {
                throw new EmptyException();
            }
            else return rest;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if(stat !=null)
            {
                try {
                    stat .close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(resultSet!=null)
            {
                try {
                    resultSet.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
        return rest;
    }

如果是获得最大值,那么就小改下sql语句即可。

例二 查询全体员工数据:
arraylist理解成数组就行,这里的返回值就是。把每个人的所有信息变为字符串数组,然后把每个字符串数组放入数组里返回,这么理解就行了

 public ArrayList<String[]> query_ALL()
     {
         ArrayList<String[]> arrayList = new ArrayList<>();
         try {
             stat = conn.createStatement("select * from emp");//模板
             resultSet = stat .executeQuery();//模板
             ResultSetMetaData resultSetMetaData = resultSet.getMetaData();//通过查询结果集获得数据
             int column = resultSetMetaData.getColumnCount();//得到获取的数据有多少列,方便遍历
             int k = 0;
             while (resultSet.next()) //也可以理解为模板,有想真正理解的自行百度吧,就是个类似迭代器的东西
             {
                 String[]strs = new String[5];//因为有5个属性所以字符串数组大小为5
                 k=0;
                 for(int i=1;i<=column;i++) //就是循环一个人的所有信息
                 {
                    strs[k]=resultSet.getString(i);  //得到对应列的内容
                    k++;
                 }
                arrayList.add(strs);//将这个人的全部信息,放入到数组里面,然后接着看下一个人
             }
         } catch (SQLException throwables) {
             throwables.printStackTrace();
         }finally {
             if(stat !=null)
             {
                 try {
                     stat .close();
                 } catch (SQLException throwables) {
                     throwables.printStackTrace();
                 }
             }
             if(resultSet!=null)
             {
                 try {
                     resultSet.close();
                 } catch (SQLException throwables) {
                     throwables.printStackTrace();
                 }
             }
         }

         return arrayList;
     }

例三:删除(这个就比较简单了,一看就懂,纯套模板)若删除成功返回true,否则返回false

     public void delete(int No) throws NotFoundNoException {
           boolean success= false;
         try {
             stat = conn.createStatement("delete from emp where No="+No);
             success = stat .execute();

         } catch (SQLException throwables) {
             throw new NotFoundNoException("");
         }

     }

例四:修改(也简单):
这里if的意思是:当用户选择了要改变的属性时,程序需要知道要修改哪一部分,所以通过这种方式判断
sql语句该怎么写

    public void update(String item,String text,int No) throws NotFoundNoException {
        try {
            String s=null;
            if(item.equals("工资"))
            {
                stat = conn.createStatement("update emp set sal="+"text where no="+No);
                stat .execute();
            }else if(item.equals("电子邮箱"))
            {
                stat = conn.createStatement("update emp set email="+"text where no="+No);
                stat .execute();
            }
            else{
                stat = conn.createStatement("update emp set birthday="+text+" where no="+No);
                stat .execute();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
           throw  new NotFoundNoException("");
        }
    }

例五:插入,也很简单,就是构造SQL语句的时候需要注意一下,可能会眼花

public void insert(String Name,String Birthday,String Email,int Sal)
     {
         try {
      
String sql = "insert into emp (name,birthday,email,sal) values("    +Name+   ","   +Birthday+    ","   +Email+    ","+    Sal+      ")";
             stat = conn.createStatement(sql);
             stat .execute();
         } catch (SQLException throwables) {
             throwables.printStackTrace();
         }
     }

也许有人想知道如何通过图形化界面控制数据库,那么请看我之前的文章,其实就是一个思路的问题https://blog.csdn.net/m0_46261647/article/details/116499560

其实在操作数据库的时候,用preparedstatement其实更好(涉及到数据库安全的问题),不过由于时间原因,就先不写了,有兴趣的朋友可以自行百度。

第一次写这么长的文章,虽然感觉有点繁琐,但还是值得的,文章中的内容可能有错误的地方,望大家指出

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值