新手Java(三)---控制台 实现增删改查

参考完一二步骤,这里默认数据库已经创建完成  库与表。

框架显示图:

2:在SRC---》Test 下面 创建一个类:BaseDao

该类里面有2个主要方法。

     1:查询方法   prepareStatement   

     2:非查询方法 (增删改)  executeUpdate  

注意点: 一:JDBC_DRIVER 连接驱动的,这里需要看Mysql的版本。

如果是8.0以上的版本,需要用 com.mysql.cj.jdbc.Driver

该版本是mysql5.7  所以使用的是:com.mysql.jdbc.Driver

               二:Class.forName(JDBC_DRIVER);  这个是加载驱动,需要用try catch 并且用ClassNotFoundException 抛异常

               三:DB_URL 这个是mysql的连接地址。mytest是数据库名称

        四:USER:mysql改数据库账号

                五:PASS:数据库登入密码

三:底层连接数据库类:

package Test;
import java.sql.*;
public class BaseDao {
    /***    *      * @author 数据库连接类   *  */
    private String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    private String DB_URL = "jdbc:mysql://localhost:3306/mytest";       // ---------自己写数据库表名,只要数据库的表名跟这里的一样就行
    private String USER = "root";    //  ----------你自己数据库的名称
    private String PASS = "123456";      //  -----------你自己数据库的密码
    Connection conn = null;


    /****  @param 打开数据库 */
    protected Connection getConnetconn() {
        conn = null;
        try {
            Class.forName(JDBC_DRIVER);
            //打开连接
            System.out.println("连接数据库.....");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    /****  @param 关闭数据库连接  */
    protected void closeAll(Connection conn, PreparedStatement ps, ResultSet rs) {
        if (rs != null)
            try {
                if (rs != null)
                    rs.close();
                if (ps != null)
                    ps.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }


    /***  @param 增删改方法 * @param 接受 参数为 SQL语句 和 对象数组       * @return 返回受影响行数     */
    public int executeUpdate(String sql ,Object []ob) {
        conn = getConnetconn();
        PreparedStatement ps = null;
        try {
            ps = prepareStatement(conn, sql, ob);
            int i = ps.executeUpdate();
            return i;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            //     e.printStackTrace();
            return 0;
        } finally {
            closeAll(conn, ps, null);
        }
    }

        ///***     * 查询方法        */
    protected PreparedStatement prepareStatement(Connection conn, String sql, Object[] ob) {

          PreparedStatement ps = null;
          try {
              int index = 1;
              ps = conn.prepareStatement(sql);
              if (ps != null && ob != null) {
                  for (int i = 0; i < ob.length; i++) {
                      ps.setObject(index, ob[i]);
                      index++;
                  }
              }
          } catch (SQLException e1) {
              e1.printStackTrace();
          }
          return ps;
      }

}

四:创建一个视图类,其实不创建类也可以实现改Demo,为了更直观,可以创建一个类,类名:UserInfoModel

package Test;

public class UserInfoModel {
    private int userid;

    private String username;

    private String useraddr;

    private String usertel;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int id) {
        this.userid = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username){
        this.username = username;
    }

    public String getUseraddr() {
        return useraddr;
    }

    public void setUseraddr(String useraddr) {
        this.useraddr = useraddr;
    }

    public String getUsertel() {
        return usertel;
    }

    public void setUsertel(String usertel) {
        this.usertel = usertel;
    }

五:调用底层三的方法,实现增删改查  

  这里:extends 是继承了父类 BaseDao

package Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class UserInfoDao extends BaseDao{


     /*---查询方法---*/
    public List<UserInfoModel> search(String sql,Object...params){
        List<UserInfoModel> list =new ArrayList<UserInfoModel>();
        Connection conn=this.getConnetconn();
        PreparedStatement pst=null;

        ResultSet rs=null;
        try {
            pst=this.prepareStatement(conn, sql, params);
            rs=pst.executeQuery();
            while(rs.next()){
                UserInfoModel wor=new UserInfoModel();
                wor.setUserid(rs.getInt(1));
                wor.setUsername(rs.getString(2));
                wor.setUseraddr(rs.getString(3));
                wor.setUsertel(rs.getString(4));
                list.add(wor);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            closeAll(conn, pst, rs);
        }
        return list;
    }

   /*新增方法*/
   public int insert(){
       UserInfoModel t=new UserInfoModel();
       t.setUseraddr("shanghai");
       t.setUsername("王五");
       t.setUsertel("13524696896");
       String str="INSERT INTO  user_info ( user_name,user_addr,user_tel) VALUE(?,?,?)";
       return executeUpdate(str, new Object[]{t.getUsername(),t.getUseraddr(),t.getUsertel()});
   }

   /*修改方法*/
    public  int  update()
    {
        UserInfoModel r=new UserInfoModel();
        r.setUseraddr("南京");
        r.setUsername("测试");
        r.setUsertel("13524698886");
        r.setUserid(7);
        String sql="UPDATE  user_info SET `user_name`=?,`user_addr`=?,`user_tel`=?  WHERE user_id=?";
        return executeUpdate(sql, new Object[]{r.getUsername(),r.getUseraddr(),r.getUsertel(),r.getUserid()});

    }

    /*删除方法*/
    public  int  delete()
    {
        UserInfoModel e=new UserInfoModel();
        String sql="DELETE FROM `user_info` WHERE user_id=?";
        e.setUserid(7);
        return executeUpdate(sql, new Object[]{e.getUserid()});
    }
}

六:在控制台 主方法 Main里面调用方法:

package Test;

import Test.Common;

public class Main {

    public static void main(String[] args) {
 UserInfoDao dao=new UserInfoDao();
 dao.search("select  user_id, user_name,user_addr,user_tel from  user_info");
 int insert= dao.insert();
 System.out.println("新增成功条数:"+insert);
 int update=dao.update();
 System.out.println("修改成功条数:"+update);

int delete =dao.delete();
System.out.println("删除成功条数:"+delete);

}

七:完毕

猜你喜欢

转载自blog.csdn.net/xulong5000/article/details/91046633