请帮我写一个程序 要求1:使用Javaee语言在intellij IDEA软件上连接navicat数据库 ,可以在网页上进行增删改查。 要求2:不使用Java Web项目 要求3:假设我是编程小白,请帮我详细解释各行代码
时间: 2024-05-02 16:22:26 浏览: 170
JDBC连接数据库实现增删改查操作,饭店点餐系统。刚学Java时写的,Java入门项目,适合初学者学习.zip
好的,我会尽力回答你的问题,下面是程序的详细解释。
首先,我们需要引入所需的包,包括Java.sql和javax.servlet。这两个包分别用于数据库的连接和Servlet开发。
```java
import java.sql.*;
import javax.servlet.*;
```
接下来,我们需要定义一个类,我们命名为DatabaseServlet。使用@WebServlet注解来将此类声明为servlet。在此类中,我们将处理所有与数据库相关的操作。
```java
@WebServlet("/database")
public class DatabaseServlet extends HttpServlet {
//数据库连接和查询等操作在此处进行
}
```
现在我们需要在此Servlet中添加一个doGet()方法来处理HTTP GET请求。doGet方法接收HTTP请求和HTTP响应参数,并在接收到Web请求时响应一个由我们编写的HTML页面,该页面允许用户对数据库进行增删改查操作。我们通过调用response.getWriter()方法来添加HTML响应。在此HTML页面中,我们将添加一个表格元素,该元素允许用户添加,查询,更新和删除数据库。
```java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Database Servlet</h1>");
out.println("<table border='1'>");
out.println("<tr><th>ID</th><th>Name</th><th>Email</th><th>Action</th></tr>");
out.println("<tr><td></td><td><input type='text' name='name'></td><td><input type='text' name='email'></td><td><input type='submit' name='add' value='Add'></td></tr>");
out.println("</table>");
out.println("</body></html>");
}
```
下一步,我们需要建立与数据库的连接。我们将使用以下参数进行连接:数据库URL,数据库用户名和密码。在此处,我们将使用Navicat数据库,在IntelliJ IDEA软件中,我们将连接到该数据库连接器。
```java
String url = "jdbc:mysql://localhost:3306/test_database";
String user = "root";
String password = "password";
Connection con = DriverManager.getConnection(url, user, password);
```
现在,我们需要将在HTML表格中输入的数据存储到数据库中。我们将检查用户是否单击了表格中的“Add”按钮,如果是,则将相关数据存储到数据库。
```java
String name = request.getParameter("name");
String email = request.getParameter("email");
String sql = "INSERT INTO contacts (name, email) values (?, ?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, name);
stmt.setString(2, email);
stmt.executeUpdate();
```
我们可以通过使用JDBC语句从数据库中检索数据,如查询:
```java
String sql = "SELECT * from contacts";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String name = rs.getString("name");
String email = rs.getString("email");
out.println("<tr><td>" + rs.getInt("id") + "</td><td>" + name + "</td><td>" + email + "</td><td><input type='submit' name='edit' value='Edit'><input type='submit' name='delete' value='Delete'></td></tr>");
}
```
最后,我们需要在doGet()方法中添加适当的错误处理和关闭数据库连接的代码。完整的doGet()方法如下所示:
```java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
String url = "jdbc:mysql://localhost:3306/test_database";
String user = "root";
String password = "password";
Connection con = DriverManager.getConnection(url, user, password);
String name = request.getParameter("name");
String email = request.getParameter("email");
String sql = "INSERT INTO contacts (name, email) values (?, ?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, name);
stmt.setString(2, email);
stmt.executeUpdate();
sql = "SELECT * from contacts";
stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery(sql);
out.println("<html><body>");
out.println("<h1>Database Servlet</h1>");
out.println("<table border='1'>");
out.println("<tr><th>ID</th><th>Name</th><th>Email</th><th>Action</th></tr>");
out.println("<tr><td></td><td><input type='text' name='name'></td><td><input type='text' name='email'></td><td><input type='submit' name='add' value='Add'></td></tr>");
while (rs.next()) {
String name = rs.getString("name");
String email = rs.getString("email");
out.println("<tr><td>" + rs.getInt("id") + "</td><td>" + name + "</td><td>" + email + "</td><td><input type='submit' name='edit' value='Edit'><input type='submit' name='delete' value='Delete'></td></tr>");
}
out.println("</table>");
out.println("</body></html>");
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
out.println(e.getMessage());
} finally {
out.close();
}
}
```
这就是我们的程序的详细解释。希望这可以帮助你理解Java EE和数据库连接。
阅读全文