在本教程將演示如何在JDBC應(yīng)用程序中,從數(shù)據(jù)庫表中查詢數(shù)據(jù)記錄, 在查詢選擇記錄時使用Like子句添加其他條件。 在執(zhí)行以下示例之前,請確保您已經(jīng)準(zhǔn)備好以下操作:
username
)和密碼(password
)。使用JDBC應(yīng)用程序查詢表中數(shù)據(jù)記錄需要以下步驟:
導(dǎo)入包:需要包含包含數(shù)據(jù)庫編程所需的JDBC類的包。 大多數(shù)情況下,使用import java.sql.*
就足夠了。
注冊JDBC驅(qū)動程序:需要初始化驅(qū)動程序,以便可以程序中打開數(shù)據(jù)庫的通信通道。
打開連接:需要使用DriverManager.getConnection()
方法來創(chuàng)建一個Connection
對象,它表示與數(shù)據(jù)庫服務(wù)器的物理連接。
執(zhí)行查詢:需要使用類型為Statement
的對象來構(gòu)建和提交SQL語句,以從滿足給定條件的表中獲取記錄。 此查詢使用LIKE
子句來選擇所有first
字段的值包含“y
”字母的學(xué)生信息。
清理環(huán)境:需要明確地關(guān)閉所有數(shù)據(jù)庫資源,而不依賴于JVM的垃圾收集。
復(fù)制以下示例代碼保存到文件:SelectLikeClause.java中,然后編譯并運行如下 -
//STEP 1. Import required packages
// See more detail at http://www.yiibai.com/jdbc/
import java.sql.*;
public class SelectLikeClause {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/jdbc_db";
// Database credentials
static final String USER = "root";
static final String PASS = "123456";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to a selected database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("Connected database successfully...");
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
// Extract records without any condition.
System.out.println("Fetching records without condition...");
String sql = "SELECT id, first, last, age FROM student";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
// Select all records having ID equal or greater than 101
System.out.println("Fetching records with condition...");
sql = "SELECT id, first, last, age FROM student" +
" WHERE first LIKE '%y%' ";
rs = stmt.executeQuery(sql);
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
rs.close();
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
conn.close();
}catch(SQLException se){
}// do nothing
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("Goodbye!");
}//end main
}//end JDBCExample
編譯上面代碼,如下 -
F:\worksp\jdbc> javac -Djava.ext.dirs=F:\worksp\jdbc\libs SelectLikeClause.java
執(zhí)行上面代碼,如下 -
## 可先創(chuàng)建表或插入數(shù)據(jù) -
## F:\worksp\jdbc> java -Djava.ext.dirs=F:\worksp\jdbc\libs InsertRecords
F:\worksp\jdbc>java -Djava.ext.dirs=F:\worksp\jdbc\libs SelectLikeClause
Connecting to a selected database...
Fri Jun 02 00:33:58 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Connected database successfully...
Creating statement...
Fetching records without condition...
ID: 100, Age: 18, First: C++, Last: Li
ID: 101, Age: 25, First: Python, Last: Py
ID: 102, Age: 30, First: Ruby, Last: Ru
ID: 103, Age: 28, First: Java, Last: Ja
Fetching records with condition...
ID: 101, Age: 25, First: Python, Last: Py
ID: 102, Age: 30, First: Ruby, Last: Ru
Goodbye!
F:\worksp\jdbc>
在執(zhí)行上面語句后,可以看到只有 first
字段的值中包含有y
字母的兩條(ID為101和102)記錄查詢顯示出來。