JSP的增删改查

        本例采用的是mysql数据库,通过JDBC连接,需要使用mysql-connector驱动;另外需要将sql查询的结果集封装至对象中,即ORM,把关系型数据库的表结构映射到对象上,因此需要编写实体类。

        本次演示的仅针对具体功能,上下例子没有关联性。另外,本文属于编程新手,使用的方法很简单,没有框架,技术大牛请忽略。

一、DBUtil

Util是工具类,一般用来描述和业务逻辑没有关系的数据处理,这里用来封装数据库连接。

public class DBUtil {
	        //连接数据库地址
		private static final String URL="jdbc:mysql://localhost:3306/testdb";
		//用户名
		private static final String UNAME="user";
		//密码
		private static final String PWD="password";
		private static Connection conn=null;
		
		static {
			try {
				//加载驱动
				Class.forName("com.mysql.jdbc.Driver");
				//获取数据库的连接
				conn=DriverManager.getConnection(URL,UNAME,PWD);
			}
			catch(ClassNotFoundException e){
				e.printStackTrace();			
			}
			catch(SQLException e) {
				e.printStackTrace();
			}
		}
		public static Connection getConnection() {
			return conn;
		}
		public static void close(ResultSet rs,Statement stat,Connection conn){
				 try {
				     if(rs!=null)rs.close();
				     if(stat!=null)stat.close();
				     if(conn!=null)conn.close();
				     } catch (SQLException e) {
				     e.printStackTrace();
				     }
				     }
}

二、实体类

这里用来对应封装sql结果集

public class Sku implements Serializable{
			//实体类
			private static final long serialVersionUID=1L;
			//唯一主键
			private Integer id;
			private String sku;
			private String name;
			public Integer getId() {
				return id;
			}
			public void setId(Integer id) {
				this.id=id;
			}
			public String getSku() {
				return sku;
			}
			public void setSku(String sku) {
				this.sku=sku;
			}
			public String getName() {
				return name;
			}
			public void setName(String name) {
				this.name=name;
			}
}

三、查询操作

这里仅演示全部查询(没有条件)

                //查询所有数据
		public List<Sku> findAll() throws SQLException {//返回Sku对象的list,将查询结果封装至该实体类
			Connection conn = null;
			PreparedStatement ps = null;
			ResultSet rs = null;
			Sku s = null;
			List<Sku> skus = new ArrayList<Sku>();
			String sql = "select * from testdb where type=1";
			try{
			    conn = DBUtil.getConnection();//调用数据库连接
			    ps = conn.prepareStatement(sql);//执行sql语句
			    rs = ps.executeQuery();//得到结果集
			    while(rs.next()){//将结果集的每条记录循环封装至对象实例
			    s = new Sku();//实例化对象
			    s.setId(rs.getInt(1));//通过set方法对对象属性赋值
			    s.setSku(rs.getString(2));
			    s.setName(rs.getString(3));
			    skus.add(s);//将实例添加到对象list的中,list的中的count就是查询的结果数
			    }
			}catch(SQLException e){
			      e.printStackTrace();
			      throw new SQLException("查询所有数据失败");
			      }
			      return skus;//返回对象list
			}

四、插入操作

                 //添加方法(写入数据库)
	         public void add(SkuCode sc) throws SQLException {
		 	Connection conn = null;
		 	PreparedStatement ps = null;
		 	String sql = "insert into testdb(l1,l2,l3,l4,l5,sku,createtime,type)values(?,?,?,?,?,?,?,1)";
		 	try{
		 		conn = DBUtil.getConnection();
		 		ps = conn.prepareStatement(sql);
		 		ps.setString(1, sc.getL1());//通过实体类的get方法将变量赋值给sql语句
		 		ps.setString(2, sc.getL2());
		 		ps.setString(3, sc.getL3());
		 		ps.setString(4, sc.getL4());
		 		ps.setString(5, sc.getL5());
		 		ps.setString(6, sc.getSku());
		 		ps.setString(7, sc.getCreatetime());
		 		ps.executeUpdate();//执行sql语句
		 		}catch(SQLException e){
		 				e.printStackTrace();
		 				throw new SQLException("添加数据失败");
		 		}
		 	}

五、删除操作

                       
//删除方法(写入数据库)
public void del(Code c) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
String sql = "delete from testdb where id in (?)";//根据id删除
try{
    conn = DBUtil.getConnection();
    ps = conn.prepareStatement(sql);
    ps.setInt(1, c.getId());
    ps.execute();
    }catch(SQLException e){
         e.printStackTrace();
    throw new SQLException("删除sku码失败");
    }
}

六、总结

增删改查方法实现的原理大多数相同,主要是跟业务结合,参数通过action使用post从页面传到后台。

主要的思路就是调用数据库连接,写sql语句,将页面的传来的参数赋值到sql语句中,然后执行;另外就是实体类,表结构映射到对象,返回对象list。

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值