发表于: 2017-09-23 20:29:50
1 864
今天完成的事情:
一、学习了MVC的概念,结合JDBC的知识,把对数据库的连接并实现简单的增删改查工程
(1)eclpse创建普通Java项目,加入依赖包
(2)这里采取DB-->model层-->control层--view层实现过程
DB层主要是数据库的设计以及采用最基本的JDBC连接数据库的方式,这是Java语言最基本的连接数据库的方式
JDBC连接MySQL数据库分四个步骤:1、注册驱动,jdbc:mysql://localhost:3306/task 2、创建连接connection
3、声明statement 4、查询数据 这里把前两个步骤写一个方法直接返回数据库连接。
package com.imooc.db;
import java.sql.*;
public class DBUtil {
private static final String url="jdbc:mysql://localhost:3306/task";
private static final String user="root";
private static final String password="1234";
private static Connection conn = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(url, user, password);
} catch (Exception e) {
// TODO Auto-generated ca()tch block
e.printStackTrace();}
}
public static Connection getConnection() {
return conn;
}
}
(3)下面写model层,新建user.java,重写tostring方法
package com.imooc.model;
import java.util.Date;
public class User {
private int id;
private String name;
private String url;
private Date staDay;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Date getStaDay() {
return staDay;
}
public void setStaDay(Date staDay) {
this.staDay = staDay;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", url=" + url + ", staDay=" + staDay + "]";
}
}
(4)定义userDao,定义数据库的增删改查方法,这里没有采用接口和实现类的方式来写DAO
package com.imooc.dao;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import com.imooc.db.DBUtil;
import com.imooc.model.User;
public class UserDao {
//增加用户
public void addUser(User u2) throws SQLException {
Connection conn=DBUtil.getConnection();
String sql="insert into user (name,url,staDay) values(?,?,?)";
PreparedStatement ptmt=conn.prepareStatement(sql);
ptmt.setString(1,u2.getName());
ptmt.setString(2, u2.getUrl());
ptmt.setDate(3, new Date(u2.getStaDay().getTime()));
ptmt.execute();
}
//删除
public void delUser(int id) throws SQLException {
Connection conn=DBUtil.getConnection();
String sql="delete from user where id=?";
PreparedStatement ptmt=conn.prepareStatement(sql);
ptmt.setInt(1, id);
ptmt.execute();
}
//更新
public void updateUser(User u2) throws SQLException {
Connection conn=DBUtil.getConnection();
String sql="update user set name=?, set url=? , set staDay= ? where id=?";
PreparedStatement ptmt=conn.prepareStatement(sql);
ptmt.setString(1,u2.getName());
ptmt.setString(2, u2.getUrl());
ptmt.setDate(3, new Date(u2.getStaDay().getTime()));
ptmt.setInt(4, u2.getId());
ptmt.execute();
}
//查询所有
public List<User> query() throws SQLException{
Connection conn=DBUtil.getConnection();
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select id,name,url from user");
List<User> usr=new ArrayList<User>();
User usr1=null;
while (rs.next()) {
usr1=new User();
usr1.setId(rs.getInt("id"));
usr1.setName(rs.getString("name"));
usr1.setUrl(rs.getString("url"));
usr.add(usr1);
}
return usr;
}
// 查询单个
public User getuser(int id) throws SQLException {
Connection conn=DBUtil.getConnection();
String sql="select * from user where id=? ";
PreparedStatement ptmt=conn.prepareStatement(sql);
ptmt.setInt(1,id);
ResultSet rs=ptmt.executeQuery();
User u1=new User();
while(rs.next()) {
u1.setId(rs.getInt("id"));
u1.setName(rs.getString("name"));
u1.setUrl(rs.getString("url"));
u1.setStaDay(rs.getDate("staDay"));
}
return u1;
}
}
(5)写control层来与DAO交互
package com.imooc.control;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import com.imooc.dao.UserDao;
import com.imooc.model.User;
public class UserControl {
public void add(User u1) throws SQLException {
UserDao dao=new UserDao();
dao.addUser(u1);
}
public void edit(User u1) throws SQLException {
UserDao dao=new UserDao();
dao.updateUser(u1);
}
public void del(int id) throws SQLException {
UserDao dao=new UserDao();
dao.delUser(id);
}
public List<User> query() throws SQLException {
UserDao dao=new UserDao();
return dao.query();
}
public User get(int id) throws SQLException {
UserDao dao=new UserDao();
return dao.getuser(id);
}
}
(6)写view层,这里展示层在控制台里交互
package com.imooc.view;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import com.imooc.control.UserControl;
import com.imooc.dao.UserDao;
import com.imooc.model.User;
import com.mysql.fabric.xmlrpc.base.Data;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor;
public class View {
private static final String contxt="欢迎使用查询系统:\n"+
"下面是列出的的功能选项 \n"+
"[m]主菜单 \n"+
"[q]查看数据库所有数据 \n"+
"[g]查看某个用户的数据\n"+
"[a]添加用户\n"+
"[u]更新用户\n"+
"[d]删除用户\n"+
"[e]退出";
private static final String optional_main="main";
private static final String optional_query="query";
private static final String optional_add="add";
private static final String optional_del="del";
private static final String optional_update="update";
private static final String optional_exit="exit";
public static void main(String[] args) {
System.out.println(contxt);
// 怎么保持程序一直运行
Scanner scan= new Scanner(System.in);
User user=new User();
UserControl control=new UserControl();
String previous=null;
int step=1;
while(scan.hasNext()){
String in=scan.next().toString();
//退出系统
if(optional_exit.equals(in.toLowerCase())||optional_exit.substring(0, 1).equals(in.toLowerCase())) {
System.out.println("你已经退出系统");
break;
}else if(optional_add.equals(in.toLowerCase())||optional_add.substring(0, 1).equals(in.toLowerCase())
||optional_add.equals(previous)){
//新增用户
previous=optional_add;
if(1==step){
System.out.println("请输入新增用户的名字:");
}else if(2==step) {
user.setName(in);
System.out.println("请输入URL");
}else if(3==step) {
user.setUrl(in);
System.out.println("请输入开始时间: 格式如:2010-01-01");
}else if(4==step) {
SimpleDateFormat sf=new SimpleDateFormat("yyyy-mm-dd");
Date sta=null;
try {
sta=sf.parse(in);
user.setStaDay(sta);
}catch(Exception e) {
e.printStackTrace();
System.out.println("你输出的格式有误,重新输入");
step=3;
}
try {
control.add(user);
System.out.println("新增用户成功");
}catch(Exception e) {
e.printStackTrace();
System.out.println("新增用户失败");
}
}
if(optional_add.equals(previous)) {
step++;
}
//删除数据
}else if(optional_del.equals(in.toLowerCase())||optional_del.substring(0, 1).equals(in.toLowerCase())
||optional_del.equals(previous)) {
System.out.println("请输入删除用户的id:");
try {
control.del(Integer.valueOf(scan.next().toString()));
System.out.println("该用户数据已删除");
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//更新数据
else if(optional_update.equals(in.toLowerCase())||optional_update.substring(0, 1).equals(in.toLowerCase())
||optional_update.equals(previous)){
previous=optional_update;
if(1==step){
System.out.println("请输入更新用户的ID:");
}else if(2==step) {
user.setId(Integer.valueOf(in));
System.out.println("请输入更新用户的名字:");
}else if(3==step) {
user.setName(in);
System.out.println("请输入更新URL");
}else if(4==step) {
user.setUrl(scan.next());
System.out.println("请输入更新开始时间: 格式如:2010-01-01");
}
else if(5==step) {
SimpleDateFormat st=new SimpleDateFormat("yyyy-mm-dd");
Date sta=null;
try {
sta=st.parse(scan.next());
user.setStaDay(sta);
}catch(Exception e) {
e.printStackTrace();
System.out.println("你输出的格式有误,重新输入");
step=4;
}
try {
control.edit(user);
System.out.println("用户数据更新成功");
}catch(Exception e) {
e.printStackTrace();
System.out.println("用户数据更新失败");
}
}
if(optional_add.equals(previous))
step++;
}
//返回主菜单
if(optional_main.equals(in.toLowerCase())||optional_main.substring(0, 1).equals(in.toLowerCase())
||optional_main.equals(previous)) {
System.out.println("返回主功能菜单");
continue;
}
}
}
}
实现过程并查看本地数据库
本地数据库已经有新用户添加进去
明天的计划:
1、学习Linux
遇到的问题:
无
收获:
1.重新复习下JDBC知识,对jdbc的理解又加深了。
评论