解决数据库中取值与java中的string不匹配的问题

考试网站的经验 专栏收录该内容
2 篇文章 0 订阅

Part2

      在两个项目中都遇到了一个相同的问题,一直没有得到解决。

      就是如何将数据库提取出来的值与java中的字符串相匹配。


     下面是一个简单的实例:


public static void main(String[] args){
        try{
            //调用Class.forName()方法加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");              
            String url="jdbc:mysql://localhost:3306/news?characterEncoding=utf-8";    //JDBC的URL    
            Connection conn;
            conn = DriverManager.getConnection(url,"root","pwy4225054");
            Statement stmt = conn.createStatement(); //创建Statement对象
            String sql = "select * from employee where name='Tom'";    //要执行的SQL          
            ResultSet rs = stmt.executeQuery(sql);//创建数据对象             
                while (rs.next()){
                    System.out.print(rs.getString(1));
                }
                rs.close();
                stmt.close();
                conn.close();
            }catch(Exception e)
            {
                e.printStackTrace();
            }
    }


然后在代码中加入:

public static void main(String[] args){
        try{
            //调用Class.forName()方法加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");              
            String url="jdbc:mysql://localhost:3306/news?characterEncoding=utf-8";    //JDBC的URL    
            Connection conn;
            conn = DriverManager.getConnection(url,"root","pwy4225054");
            Statement stmt = conn.createStatement(); //创建Statement对象
            String sql = "select * from employee where name='Tom'";    //要执行的SQL          
            ResultSet rs = stmt.executeQuery(sql);//创建数据对象             
                while (rs.next()){
                    if(rs.getString(1)=="Tom")
                        System.out.print(rs.getString(1));
                }
                rs.close();
                stmt.close();
                conn.close();
            }catch(Exception e)
            {
                e.printStackTrace();
            }
    }

无法输出


简直是奇了!!!因为rs.getString(1)中输出的“Tom”明明是应该等于“Tom”的!!!!

然后还是在求教于老师后,解决了!!!!


public static void main(String[] args){
        try{
            //调用Class.forName()方法加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");              
            String url="jdbc:mysql://localhost:3306/news?characterEncoding=utf-8";    //JDBC的URL    
            Connection conn;
            conn = DriverManager.getConnection(url,"root","pwy4225054");
            Statement stmt = conn.createStatement(); //创建Statement对象
            String sql = "select * from employee where name='Tom'";    //要执行的SQL          
            ResultSet rs = stmt.executeQuery(sql);//创建数据对象             
                while (rs.next()){
                    if(rs.getString(1).equalsIgnoreCase("Tom"))
                        System.out.print(rs.getString(1));
                }
                rs.close();
                stmt.close();
                conn.close();
            }catch(Exception e)
            {
                e.printStackTrace();
            }
    }

用到了equalsIgnoreCase() 函数

忽略字符串的大小写,其实还是不太明白的,因为从输出上来看,这两个字符串不存在大小写的问题的。但是最终问题还是得到了解决!

  • 2
    点赞
  • 0
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

珏子

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值