zoukankan      html  css  js  c++  java
  • 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 %s %f %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

  • 相关阅读:
    CVE-2010-3333
    CVE-2010-2883
    谷歌不兼容showModalDialog()方法出现对话窗口解决方法
    asp.net中邮箱发送
    在c#中access2003和access2007连接字符串
    MVC连接Sql Server数据库出现的小问题
    使用360浏览器访问字体逆时针旋转90度的问题
    bootstrap与360浏览器不兼容问题
    委托的使用方法
    某集网将我的信息给了谁?还是不良卖家不想卖东西
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615466.html
Copyright © 2011-2022 走看看