這裏不再多說,直接把程序放到上面,後續如果筆者有新發現、新認識,會即使更新。
這裏程序仍然是對照Statemeng的查詢功能來寫程序。
1. 程序展示
1. 自行準備jar包,並導入到項目中。
2.程序部分:
import java.sql.*;
import java.util.Scanner;
public class JDBCDemoSelect {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
System.out.println("**歡迎使用(輸入年齡->檢索人員信息)信息查詢系統**");
//獲取鍵盤輸入
Scanner input = new Scanner(System.in);
System.out.println("請輸入查詢的年齡:");
int age = input.nextInt();
//1.註冊驅動
Class.forName("com.mysql.jdbc.Driver");
//2.連接數據庫
String url = "jdbc:mysql://localhost:3306/test";
Connection conn = DriverManager.getConnection(url,"root","88888888");
//3.操作數據庫(Statement)
/*
//編寫sql語句
String sql = "SELECT * FROM stu_info WHERE age = "+age+";";
//創建Statement
Statement st = conn.createStatement();
//執行sql語句 + 創建結果集
ResultSet rs = st.executeQuery(sql);
//遍歷數據
while(rs.next())
{
String Stuname = rs.getString("stuname");
int Age = rs.getInt("age");
System.out.println("姓名:"+Stuname+" 年齡:"+Age);
}
* */
//3.操作數據庫(PrepareStatement)
//編寫sql語句
String sql = "SELECT * FROM stu_info WHERE age = ?;";
//創建PrepareStatement
PreparedStatement pst = conn.prepareStatement(sql);
pst.setInt(1,age);
//執行sql+創建結果集
ResultSet rs = pst.executeQuery();
//遍歷結果集
while(rs.next())
{
String stuname = rs.getString("stuname");
int Age = rs.getInt("age");
System.out.println("員工姓名: "+stuname +" 年齡: "+Age);
}
//4.關閉資源
conn.close();
pst.close();
rs.close();
}
}
2. 程序分析與演示
-
我的數據庫:
-
鍵盤輸入與結果展示:
查詢成功。
3. Statement存在問題的三個方面
Statement存在問題的方面由三個:
- 字符串拼接問題,就是系列(五)提到的。
- SQL注入問題。
- 無法二進制數據問題。
後面兩個問題,暫時先不提。