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萬條數據呢? 內存都不夠用的。
- SQL
CREATE TABLE user (
id int(11) AUTO_INCREMENT,
name varchar(30) ,
password varchar(30),
PRIMARY KEY (id)
) ;
insert into user values(null,'dashen','thisispassword');
- TestJDBC.java
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();
}
}
}
4、練習:分頁查詢
設計一個方法,進行分頁查詢
public static void list(int start, int count)
start 表示開始頁數,count表示一頁顯示的總數
list(0,5) 表示第一頁,一共顯示5條數據
list(10,5) 表示第三頁,一共顯示5條數據
public class Main {
static ThreadPoolExecutor tpe;
public static void main(String[] args) {
quiter(15,25);
}
public static void quiter(int d,int dd){
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try(Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
"root", "admin");
Statement statement=connection.createStatement();){
System.out.println("獲取到statement對象"+statement);
String qureywhere=d+","+dd;
String sql="select * from hero limit "+qureywhere;
ResultSet set= statement.executeQuery(sql);
while (set.next()){
int id=set.getInt("id");
String name=set.getString("name");
float hp=set.getFloat("hp");
int da=set.getInt("damage");
System.out.println(id+name+hp+da);
}
System.out.println("執行sql語句操作成功");
} catch (SQLException e) {
e.printStackTrace();
}
}
}