执行查询SQL语句
步骤1:查询语句
步骤2:SQL语句判断账号密码是否正确
步骤3:获取总数
步骤4:练习-分页查询
步骤5:答案-分页查询
步骤 1 : 查询语句
executeQuery 执行SQL查询语句
注意: 在取第二列的数据的时候,用的是rs.get(2) ,而不是get(1). 这个是整个Java自带的api里唯二的地方,使用基1的,即2就代表第二个。
另一个地方是在PreparedStatement这里
![查询语句](https://i-blog.csdnimg.cn/blog_migrate/ad1175c04f0a2da907a2d8cc6c153745.png)
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获取出来
![获取总数](https://i-blog.csdnimg.cn/blog_migrate/352ca59d44ff31e8e6c7ce7736796342.png)
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