概述
在Java学习过程中,将学到的知识综合到一起使用是一个必要的过程,所以,来巩固一下java调用数据库的相关的知识。
新建的项目采用的是MVC模式构建的,使用的IDEA + mysql5.6.12 + jdk1.8.0_71, 针对学生信息的增删改查开发的一个简单的管理系统(无界面)。
简介
简单介绍一下项目目录结构
包名 | 作用 |
---|---|
controller | 用于存放操作数据的类,在View和数据库中间起着连接的作用 |
dao | 用于存放操作数据库数据的类 |
db | 用于得到数据库连接 |
entity | 用于存放项目中需要用到的模型的实体类 |
开发流程
第一步:新建数据库和表
我们实现的是基本的学生信息管理系统,那么主要对象是学生,次要对象时管理员,那么他们的属性分别是:
学生
(名字、性别、年龄、电话、地址)
name varchar(20) not null,
sex varchar(5) not null,
age int not null,
phone varchar(11) not null,
address varchar(20) not null
管理员
(账号、密码)
account varchar(20) not null,
paw varchar(20) not null
第二步:创建工程,导入jdbc的jar包
此时,我们编写测试连接的代码,来测试一下是否可以成功连接数据库。
//静态块初始化
static {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = (Connection) DriverManager.getConnection(url,username,password);
System.out.println("连接成功!");
} catch (Exception e) {
System.out.println("连接失败!");
e.printStackTrace();
}
}
//得到连接实例的引用
public static Connection getConnection(){
return conn;
}
//测试代码
public static void main(String[] args) {
//测试连接
Connection connection = DbConnectUtil.getConnection();
}
运行试试
连接成功!
Process finished with exit code 0
可以看到,数据库连接成功了。
第三步:实现相应表的数据的增删改查的方法的封装
管理员表的相关操作
新增信息
public static boolean addManagerInfo(Connection connection, Manager manager) {
boolean result;
String mysql = "insert into number(account,paw) values(?,?)";
PreparedStatement ptt = null;
try {
ptt = (PreparedStatement) connection.prepareStatement(mysql);
ptt.setString(1, manager.getAccount());
ptt.setString(2, manager.getPsw());
result = ptt.execute();
} catch (SQLException e) {
System.out.println("添加管理员信息失败");
e.printStackTrace();
result = false;
}finally {
try {
ptt.close();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
测试一下
public static void main(String[] args) {
Connection connection = DbConnectUtil.getConnection();
//添加管理员
ManagerDao.addManagerInfo(connection,new Manager("123456","123456"));
}
我们看下数据库里面是否添加成功了
mysql> select * from number;
+----+---------+--------+
| id | account | paw |
+----+---------+--------+
| 1 | 123456 | 123456 |
+----+---------+--------+
1 row in set (0.02 sec)
可以看到,数据添加成功了。
下面我们实现查询的操作
public static List<Manager> queryAllManager(Connection connection) {
Statement stt = null;
ResultSet rs = null;
List<Manager> managers = new ArrayList<>();
try {
stt = (Statement) connection.createStatement();
rs=stt.executeQuery("select * from number");
while(rs.next()){
int id = rs.getInt("id");
String account = rs.getString("account");
String psw = rs.getString("paw");
Manager manager = new Manager(id,account,psw);
managers.add(manager);
}
} catch (SQLException e) {
System.out.println("管理员全部信息查询失败");
e.printStackTrace();
}finally{
try {
stt.close();
rs.close();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return managers;
}
测试一下
public static void main(String[] args) {
Connection connection = DbConnectUtil.getConnection();
List<Manager> managers = ManagerDao.queryAllManager(connection);
for (Manager manager : managers) {
System.out.println(manager.toString());
}
}
看下运行结果
连接成功!
Manager{id=1, account='123456', psw='123456'}
Process finished with exit code 0
可以看到,查询出来我们刚添加的那条信息了。
我们再来试试修改。
public static boolean updateManagerInfo(Connection connection, Manager newManager) {
boolean result;
String sql="update number set account=?,paw=? where id = ?";
PreparedStatement pst = null;
try {
pst=(PreparedStatement) connection.prepareStatement(sql);
pst.setString(1, newManager.getAccount());
pst.setString(2, newManager.getPsw());
pst.setInt(3, newManager.getId());
result = pst.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result = false;
} finally {
try {
pst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
测试一下
public static void main(String[] args) {
Connection connection = DbConnectUtil.getConnection();
List<Manager> managers = ManagerDao.queryAllManager(connection);
for (Manager manager : managers) {
System.out.println(manager.toString());
}
Manager manager = managers.get(0);
manager.setAccount("111111");
manager.setAccount("aaaaaa");
ManagerDao.updateManagerInfo(connection,manager);
}
看看修改结果
mysql> select * from number;
+----+---------+--------+
| id | account | paw |
+----+---------+--------+
| 1 | aaaaaa | 123456 |
+----+---------+--------+
1 row in set (0.02 sec)
可以看到,修改也是没有问题的。
最后,我们实现一下删除的操作
public static boolean deleteManagerInfo(Connection connection, int id) {
boolean result;
String sql="delete from number where id=?";
PreparedStatement pst = null;
try {
pst = (PreparedStatement) connection.prepareStatement(sql);
pst.setInt(1, id);
result = pst.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result = false;
} finally {
try {
pst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
测试一下
public static void main(String[] args) {
Connection connection = DbConnectUtil.getConnection();
List<Manager> managers = ManagerDao.queryAllManager(connection);
for (Manager manager : managers) {
System.out.println(manager.toString());
}
Manager manager = managers.get(0);
ManagerDao.deleteManagerInfo(connection,manager.getId());
}
看看结果
mysql> select * from number;
Empty set
基本的增删改查的功能我们就实现完了。
结合这些基本代码,我们可以完成我们的小项目。
运行截图
那么整体的项目到这里就算完成了。
需要代码的或者 需要帮忙协助开发的 请加QQ:1170932205 ,