编写Java程序,使用PreparedState实现对英雄数据的新增、删除和更新
时间: 2024-02-11 22:09:57 浏览: 159
好的,下面是一个使用 PreparedState 实现对英雄数据的增删改查的 Java 程序示例:
```java
import java.sql.*;
public class HeroDAO {
private Connection conn = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
// 数据库连接
public void getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
} catch (Exception e) {
e.printStackTrace();
}
}
// 新增英雄数据
public void addHero(Hero hero) {
try {
getConnection();
String sql = "INSERT INTO hero (name, hp, damage) VALUES (?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, hero.getName());
ps.setFloat(2, hero.getHp());
ps.setInt(3, hero.getDamage());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
}
// 删除英雄数据
public void deleteHero(int id) {
try {
getConnection();
String sql = "DELETE FROM hero WHERE id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
}
// 更新英雄数据
public void updateHero(Hero hero) {
try {
getConnection();
String sql = "UPDATE hero SET name = ?, hp = ?, damage = ? WHERE id = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, hero.getName());
ps.setFloat(2, hero.getHp());
ps.setInt(3, hero.getDamage());
ps.setInt(4, hero.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
}
// 查询英雄数据
public Hero getHero(int id) {
Hero hero = null;
try {
getConnection();
String sql = "SELECT * FROM hero WHERE id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
while (rs.next()) {
hero = new Hero();
hero.setId(rs.getInt("id"));
hero.setName(rs.getString("name"));
hero.setHp(rs.getFloat("hp"));
hero.setDamage(rs.getInt("damage"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
return hero;
}
// 关闭连接
public void close() {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
其中,Hero 类是一个简单的实体类,包含 id、name、hp 和 damage 四个属性,对应数据库中 hero 表的四个字段。可以根据具体需要修改 Hero 类的属性和数据库表的字段。
```java
public class Hero {
private int id;
private String name;
private float hp;
private int damage;
// getter 和 setter 方法
// ...
}
```
使用示例:
```java
public class Main {
public static void main(String[] args) {
HeroDAO heroDAO = new HeroDAO();
// 新增英雄数据
Hero hero1 = new Hero();
hero1.setName("Aatrox");
hero1.setHp(580);
hero1.setDamage(70);
heroDAO.addHero(hero1);
// 查询英雄数据
Hero hero2 = heroDAO.getHero(1);
System.out.println(hero2.getName() + " " + hero2.getHp() + " " + hero2.getDamage());
// 更新英雄数据
hero2.setHp(600);
heroDAO.updateHero(hero2);
// 删除英雄数据
heroDAO.deleteHero(1);
}
}
```
注意在使用前需要先创建数据库和表,表结构如下:
```sql
CREATE TABLE `hero` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`hp` float NOT NULL,
`damage` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
这是一个非常简单的示例,实际开发中需要根据具体需求进行修改和完善。
阅读全文