发表于: 2017-09-23 20:29:50

1 865


今天完成的事情:

一、学习了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的理解又加深了。



返回列表 返回列表
评论

    分享到