Java/jdbc连接MySQL数据库时,用预处理方法,如何得到数据库的表中多条数据?

首先:要想连上MySQL数据库,首先得去官网下载符合自身Java版本的MySQL

配置jar包:

然后:将下载的jar包配置到自己的lib中,有两种方法:

1.可以打开Java的菜单上的File,去点击Project Structure,在Libraries中配置   

2、创建一个Package并命名lib,直接将jar包复制粘贴放在该里面,然后鼠标右键点击jar包,选择下面的as lib 这个选项,然后就配置完成了。

配置完成后,需要进行数据库的连接

第一步:先注册驱动:

Class forName(com.mysql.jdbc.Driver)

第二步:进行连接:

Connection conn =DriverManage.getConnection(url,username,password);

这里的url是指:MySQL的地址,如

jdbc:mysql://192.168.27.100:3306/User?useUnicode=true&characterEncoding=utf-8&useSSL=false

username是指登录MySQL的用户名;如root

password是指Mysql的登录密码

第三步:创建SQL语句操作对象和执行SQL语句:

直接创建:

Statement statement  =conn.createStatement(" ");括号里面写sql语句

//执行SQL语句:ResultSet resultSet = state.executeQuery(sql);//查询语句

预编译:预编译可以将Java中的变量传进去,也可以防止SQL注入问题!

PreparedStatement prepareStatement = conn.prepareStatement("INSERT INTO users values (?,?)");

传?的值 :prepareStatement.setString(1,name);

                   prepareStatement.setString(2,password);

//执行sql语句 int i = prepareStatement.executeUpdate();//增删改数据Update

返回的i是代表受影响的行数,在处理int类型的结果集的时候,要确保i不等于0

if(i!=0){//处理结果集,类型为int,只要不为0即可
                System.out.println("注册成功");
            }
        }catch (Exception e){
            e.printStackTrace();
        }

//执行sql语句  ResultSet resultSet = prepareStatement.executeQuery(); //查询数据Query

处理结果集,  ResultSet类型要用next来判断是否有内容,有就获取,进入执行if语句

 if(resultSet.next()){
                System.out.println("登录成功!✔");
               un=name;//登录成功,将值返回
            } 

注意:最关键的也是这里,如果用if语句,永远只能获得数据库表中的某一列,或某几列的第一行数据内容,因为if只执行一次,哪怕第一行的后面都有数据,第一行为空,也只会显示为空,所以

要使用全部数据的话,这时候要用while循环,将某(几)列的所有内容都拿出来

示例:用while可以拿到表中某列的全部内容

 while (resultSet != null&&resultSet.next()) {//结果集不能直接打印,要具体获取某一列
               String[] usernames = resultSet.getString("username").split("\r\n");//直接将结果集放入,只能放一个
               for (String username : usernames) {//上面换行切割,将每个名字都单独放到集合中
                   list.add(username);
               }
第四步处理结果集:

其实第三步里面已经包含了,如何处理结果集。在此总结:如果结果集是int 类型要用if语句判断i!=0;(i不等于0),如果需要的话,用while判断也可以,能更具体的知道受影响的行数

如果结果集是ResultSet类型,只是简单的知道是否有内容的话,就用if去判断ResultSet.next(),如果要获取表中所有数据的话,必须要用while循环,才能拿到所需要的表中所有数据

  • 20
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我的K8409

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

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

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

打赏作者

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

抵扣说明:

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

余额充值