Java自學-JDBC 查詢

在JDBC中使用ResultSet查詢SQL語句

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

  1. 建立一個用戶表,有字段name,passwordspa

  2. 插入一條數據 insert into user values(null,'dashen','thisispassword');設計

  3. 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);
    }
}
相關文章
相關標籤/搜索