JDBC系列教材 (四)- 在JDBC中使用ResultSet查询SQL语句

执行查询SQL语句

步骤1:查询语句
步骤2:SQL语句判断账号密码是否正确
步骤3:获取总数
步骤4:练习-分页查询
步骤5:答案-分页查询

步骤 1 : 查询语句

executeQuery 执行SQL查询语句

注意: 在取第二列的数据的时候,用的是rs.get(2) ,而不是get(1). 这个是整个Java自带的api里唯二的地方,使用基1的,即2就代表第二个。

另一个地方是在PreparedStatement这里

查询语句

package jdbc;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

public class TestJDBC {

    public static void main(String[] args) {

        try {

            Class.forName("com.mysql.jdbc.Driver");

        catch (ClassNotFoundException e) {

            e.printStackTrace();

        }

 

        try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",

                "root""admin"); Statement s = c.createStatement();) {

 

            String sql = "select * from hero";

 

            // 执行查询语句,并把结果集返回给ResultSet

            ResultSet rs = s.executeQuery(sql);

            while (rs.next()) {

                int id = rs.getInt("id");// 可以使用字段名

                String name = rs.getString(2);// 也可以使用字段的顺序

                float hp = rs.getFloat("hp");

                int damage = rs.getInt(4);

                System.out.printf("%d\t%s\t%f\t%d%n", id, name, hp, damage);

            }

            // 不一定要在这里关闭ReultSet,因为Statement关闭的时候,会自动关闭ResultSet

            // rs.close();

 

        catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

步骤 2 : SQL语句判断账号密码是否正确

1. 创建一个用户表,有字段name,password
2. 插入一条数据

insert into user values(null,'dashen','thisispassword');


3. SQL语句判断账号密码是否正确

判断账号密码的正确方式是根据账号和密码到表中去找数据,如果有数据,就表明密码正确了,如果没数据,就表明密码错误。

不恰当的方式 是把uers表的数据全部查到内存中,挨个进行比较。 如果users表里有100万条数据呢? 内存都不够用的。

CREATE TABLE user (

  id int(11) AUTO_INCREMENT,

  name varchar(30) ,

  password varchar(30),

  PRIMARY KEY (id)

) ;

insert into user values(null,'dashen','thisispassword');

package jdbc;

   

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

   

public class TestJDBC {

    public static void main(String[] args) {

        try {

            Class.forName("com.mysql.jdbc.Driver");

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        }

 

        try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",

                "root", "admin");

                Statement s = c.createStatement();

                 

                ) {

            String name = "dashen";

            //正确的密码是:thisispassword

            String password = "thisispassword1";

   

            String sql = "select * from user where name = '" + name +"' and password = '" + password+"'";

              

            // 执行查询语句,并把结果集返回给ResultSet

            ResultSet rs = s.executeQuery(sql);

              

            if(rs.next())

                System.out.println("账号密码正确");

            else

                System.out.println("账号密码错误");

             

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

   

    }

}

步骤 3 : 获取总数

执行的sql语句为

select count(*) from hero


然后通过ResultSet获取出来

获取总数

package jdbc;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

public class TestJDBC {

    public static void main(String[] args) {

        try {

            Class.forName("com.mysql.jdbc.Driver");

        catch (ClassNotFoundException e) {

            e.printStackTrace();

        }

 

        try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",

                "root""admin"); Statement s = c.createStatement();) {

 

            String sql = "select count(*) from hero";

 

            ResultSet rs = s.executeQuery(sql);

            int total = 0;

            while (rs.next()) {

                total = rs.getInt(1);

            }

 

            System.out.println("表Hero中总共有:" + total+" 条数据");

 

        catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

 

    }

}


更多内容,点击了解: https://how2j.cn/k/jdbc/jdbc-resultset/390.html

posted @ 2020-03-24 09:38  Lan_ht  阅读(167)  评论(0编辑  收藏  举报