Java自学-JDBC 查询
程序员文章站
2022-09-01 17:24:07
在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
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语句判断账号密码是否正确
- 创建一个用户表,有字段name,password
插入一条数据
insert into user values(null,'dashen','thisispassword');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(); } } }
练习:
设计一个方法,进行分页查询
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); } }