执行查询SQL语句html
步骤 1 : 查询语句java
executeQuery 执行SQL查询语句mysql
注意: 在取第二列的数据的时候,用的是rs.get(2) ,而不是get(1). 这个是整个Java自带的api里惟二的地方,使用基1的,即2就表明第二个。sql
另外一个地方是在PreparedStatementapi
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语句判断帐号密码是否正确this
建立一个用户表,有字段name,passwordspa
插入一条数据 insert into user values(null,'dashen','thisispassword');设计
SQL语句判断帐号密码是否正确code
判断帐号密码的正确方式是根据帐号和密码到表中去找数据,若是有数据,就代表密码正确了,若是没数据,就代表密码错误。htm
不恰当的方式 是把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); } }