欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java自学-JDBC 查询

程序员文章站 2022-04-19 10:01:16
在JDBC中使用ResultSet查询SQL语句 执行查询SQL语句 步骤 1 : 查询语句 executeQuery 执行SQL查询语句 注意: 在取第二列的数据的时候,用的是rs.get(2) ,而不是get(1). 这个是整个Java自带的api里 唯二 的地方,使用 基1 的,即2就代表第二 ......

在jdbc中使用resultset查询sql语句

执行查询sql语句

步骤 1 : 查询语句

executequery 执行sql查询语句

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

另一个地方是在preparedstatement

Java自学-JDBC 查询

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获取出来

Java自学-JDBC 查询

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();
        }
 
    }
}

练习

设计一个方法,进行分页查询

public static void list(int start, int count)

start 表示开始页数,count表示一页显示的总数
list(0,5) 表示第一页,一共显示5条数据
list(10,5) 表示第三页,一共显示5条数据

答案

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 list(int start, int count){
         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 limit " +start + "," + count;
 
                // 执行查询语句,并把结果集返回给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);
                }
              
            } catch (sqlexception e) {
                // todo auto-generated catch block
                e.printstacktrace();
            }
    }
     
    public static void main(string[] args) {
       list(10,5);
    }
}