執行查詢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); } }