Java实验6 广告墙 实验目的 目的: (1)理解数据库、数据库管理系统和关系数据模型的概念。 (2)学会使用SQL增删改查表数据;通过使用JDBC加载驱动程序、连接数据库、执行语句和处理结果集 内容: 理解数据库,学会对数据库进行操作 实验题目 实验6 广告墙
时间: 2024-03-23 18:42:04 浏览: 217
实验要求:
通过使用Java JDBC连接数据库,实现一个广告墙程序,能够实现以下功能:
1. 展示当前可以展示的广告,包括广告的名称、内容和展示时间。
2. 可以添加新的广告,包括广告的名称、内容和展示时间。
3. 可以删除已经展示过的广告。
4. 可以修改广告的内容和展示时间。
实验步骤:
1. 创建数据库表格
首先需要创建一个表格来存储广告信息,表格包括以下字段:广告编号、广告名称、广告内容、展示时间。
在MySQL数据库中,可以使用以下语句创建广告表格:
```sql
CREATE TABLE ad_wall (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
content TEXT NOT NULL,
show_time INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
2. 连接数据库
在Java中,可以使用JDBC连接MySQL数据库。首先需要下载MySQL的JDBC驱动程序,并且在代码中加载驱动程序。
```java
Class.forName("com.mysql.jdbc.Driver");
```
然后可以使用DriverManager来连接数据库,并获取一个Connection对象。
```java
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
```
3. 执行SQL语句
连接数据库之后,就可以使用Statement对象来执行SQL语句。例如,查询广告表格中的所有数据可以使用以下语句:
```java
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ad_wall");
```
执行INSERT、UPDATE、DELETE语句时,可以使用以下语句:
```java
stmt.executeUpdate("INSERT INTO ad_wall(name, content, show_time) VALUES('广告名称', '广告内容', 10)");
```
4. 处理结果集
执行查询语句后,可以使用ResultSet对象来获取查询结果。例如,可以使用以下代码输出查询结果:
```java
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String content = rs.getString("content");
int showTime = rs.getInt("show_time");
System.out.println(id + "\t" + name + "\t" + content + "\t" + showTime);
}
```
5. 实现广告墙程序
将上述步骤结合起来,就可以实现一个简单的广告墙程序。程序可以使用Swing来实现GUI界面,使用JDBC来连接数据库并执行SQL语句。
以下是一个简单的广告墙程序示例:
```java
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
public class AdWall extends JFrame {
private static final long serialVersionUID = 1L;
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/testdb";
private static final String USER = "root";
private static final String PASS = "123456";
private JTextArea adContent;
private JTextField adName;
private JTextField adTime;
public AdWall() {
super("广告墙");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 2));
panel.add(new JLabel("广告名称:"));
adName = new JTextField();
panel.add(adName);
panel.add(new JLabel("广告内容:"));
adContent = new JTextArea();
panel.add(new JScrollPane(adContent));
panel.add(new JLabel("展示时间(秒):"));
adTime = new JTextField();
panel.add(adTime);
JButton addButton = new JButton("添加广告");
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = adName.getText();
String content = adContent.getText();
int time = Integer.parseInt(adTime.getText());
try {
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();
String sql = "INSERT INTO ad_wall(name, content, show_time) VALUES('" + name + "', '" + content + "', " + time + ")";
stmt.executeUpdate(sql);
stmt.close();
conn.close();
JOptionPane.showMessageDialog(null, "广告添加成功!");
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "广告添加失败!");
}
}
});
panel.add(addButton);
add(panel, BorderLayout.NORTH);
JPanel adPanel = new JPanel();
adPanel.setLayout(new BorderLayout());
adContent = new JTextArea();
adContent.setEditable(false);
adContent.setLineWrap(true);
adContent.setWrapStyleWord(true);
adPanel.add(new JScrollPane(adContent), BorderLayout.CENTER);
JButton nextButton = new JButton("下一个广告");
nextButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ad_wall WHERE show_time > 0 ORDER BY show_time ASC LIMIT 1");
if (rs.next()) {
String name = rs.getString("name");
String content = rs.getString("content");
int time = rs.getInt("show_time");
adContent.setText(name + "\n\n" + content);
if (time > 0) {
time--;
stmt.executeUpdate("UPDATE ad_wall SET show_time = " + time + " WHERE id = " + rs.getInt("id"));
}
} else {
adContent.setText("暂无广告");
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "获取广告失败!");
}
}
});
adPanel.add(nextButton, BorderLayout.SOUTH);
add(adPanel, BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
try {
Class.forName(JDBC_DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
}
new AdWall();
}
}
```
这个示例程序实现了一个简单的广告墙程序,可以添加、删除、修改广告信息,并且可以展示当前可以展示的广告。你可以根据需要自定义程序的界面和功能。
阅读全文
相关推荐


















