java
Copy code
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet..mysql.jdbc.Driver");
// 獲取數據庫連接
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
// 創建 PreparedStatement 對象
stmt = conn.prepareStatement("SELECT * FROM mytable WHERE id = ?");
// 設置查詢參數
stmt.setInt(1, Integer.parseInt(request.getParameter("id")));
// 執行查詢
rs = stmt.executeQuery();
// 處理查詢結果
while (rs.next()) {
// 讀取數據
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
// 輸出結果
response.getWriter().println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 關閉資源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
// 處理 POST 請求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 修改數據庫
Connection conn = null;
PreparedStatement stmt = null;
try {
// 加載數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
// 獲取數據庫連接
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
// 創建 PreparedStatement 對象
stmt = conn.prepareStatement("UPDATE mytable SET name = ?, age = ? WHERE id = ?");
// 設置更新參數
stmt.setString(1, request.getParameter("name"));
stmt.setInt(2, Integer.parseInt(request.getParameter("age")));
stmt.setInt(3, Integer.parseInt(request.getParameter("id")));
// 執行更新
int count = stmt.executeUpdate();
// 輸出結果
response.getWriter().println(count + " row(s) updated.");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 關閉資源
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
以下是使用JavaWeb編程技術編寫程序使用表單提交數據修改和查詢數據庫使用PreparedStatement對象的示例代碼所對應的輸出結果。
當使用 GET 請求訪問 /myServlet?id=1 時,輸出查詢結果:
ID: 1, Name: Alice, Age: 20
當使用 POST 請求提交表單數據 id=1&name=Bob&age=25 時,輸出更新結果:
1 row(s) updated.
註:以上輸出結果僅供參考,實際輸出結果取決於數據庫中的數據和執行的操作。