Day 11 JDBC2 和Java static

9 篇文章 0 订阅

一、JDBC对产品表进行增删改查2

1.1增加(// @param product)

PreparedStatement

  • 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号**(“?”)作为占位符**。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。
  • 由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。
  • 用于设置发送给数据库以取代 IN 参数占位符的值。同时,三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数
  • PreparedStatement对象可以防止sql注入,而Statement不能防止sql注入
JDBCComon jdbc=new JDBCComon();
	Connection conn=null;

	public boolean add(Product product) {
		boolean flag=false;
		try {
			conn=jdbc.getconnection();
			String sql="insert into product2 (name,category,price) values (?,?,?)";//,做占位符
			PreparedStatement  st=conn.prepareStatement(sql);
			st.setString(1, product.getName());
			st.setString(2, product.getCategory());
			st.setBigDecimal(3, product.getPrice());
			if(st.execute()) {//execute返回类型是Boolean类型
				flag=true;
			}
			st.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return flag;
	}

测试:

	ProductService ps=new ProductService();
		//测试添加
		Product p=new Product();
		p.setCategory("水果");
		p.setName("猕猴桃");
		BigDecimal price = new BigDecimal(6.6);
		p.setPrice(price);
		ps.add(p);
1.1.2 增加并查重
public boolean add2 (Product product) {
		boolean flag=false;
		Product p1=findByName(product.getName());
		if(p1.getName()==null) {
			add(product);
			flag=true;
		}else {
			System.out.println("产品名字已经存在");
		}
		
		return flag;
	}

1.2删除(// @param id)

public boolean remove(int id) {
		boolean flag=false;
		try {
			conn=jdbc.getconnection();
			String sql="delete from product2 where id=?";
			PreparedStatement  st=conn.prepareStatement(sql);
			st.setInt(1, id);
			if(st.execute()) {//execute返回类型是Boolean类型
				flag=true;
			}
			st.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return flag;
	}

测试:

ProductService ps=new ProductService();
ps.remove(1);

1.3 修改( @param product )

	public boolean update(Product product) {
		boolean flag=false;
		try {
			conn=jdbc.getconnection();
			String sql="update product2 set name=?,category=?,price=? where id=?";
			PreparedStatement  st=conn.prepareStatement(sql);
			st.setString(1, product.getName());
			st.setString(2, product.getCategory());
			st.setBigDecimal(3, product.getPrice());
			st.setInt(4, product.getId());
			if(st.execute()) {//execute返回类型是Boolean类型
				flag=true;
			}
			st.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return flag;
	}

测试:

ProductService ps=new ProductService();
Product p1=ps.findByName("西瓜");
	BigDecimal price=new BigDecimal(5.6);
	p1.setPrice(price);
	ps.update(p1);

1.4 按照名字查询

注意:查询的返回值

public Product findByName(String productName) {
		Product product=null;
		try {
			conn=jdbc.getconnection();
			String sql="select * from product2 where name=?";
			PreparedStatement  st=conn.prepareStatement(sql);
			st.setString(1, productName);
			ResultSet rs=st.executeQuery();
			while(rs.next()){
				product=new Product();
				product.setCategory(rs.getString("category"));
				product.setId(rs.getInt("id"));
				product.setName(rs.getString("name"));
				product.setPrice(rs.getBigDecimal("price"));
			}
			rs.close();
			st.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return product;
	}

测试:

Product p1=ps.findByName("桃子");
		System.out.println(p1.getCategory());
		System.out.println(p1.getPrice());
		System.out.println(p1.getName());

1.5查询所有

public ArrayList selectAll() {
		ArrayList productlist=new ArrayList();
		try {
			conn=jdbc.getconnection();
			String sql="select * from product";
			PreparedStatement  st=conn.prepareStatement(sql);
			ResultSet rs=st.executeQuery();
			while(rs.next()) {
				Product product=new Product();
				product.setCategory(rs.getString("category"));
				product.setId(rs.getInt("id"));
				product.setName(rs.getString("name"));
				product.setPrice(rs.getBigDecimal("price"));
				productlist.add(product);
			}
			rs.close();
			st.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return productlist;
	}

测试:

	ArrayList Is=new ArrayList();
		for(int i=0;i<Is.size();i++) {
			Product p2=(Product)Is.get(i);
			System.out.println(p2.getCategory());
			System.out.println(p2.getName());
			System.out.println(p2.getPrice());
			System.out.println("--------------------");
		}

二、Java static

  • 类变量也叫静态变量,它是在类中用 static 关键字声明的,但是它在方法、构造器或者块之外
  • 静态变量存储在静态内存中,很少采用静态变量而不是声明结束或者用常量public 或 private 之一。
  • 静态变量随着程序的开始和结束而开始和结束。
  • 当静态变量被作为 public static final 声明时,变量(常量)名称都要用大写字母。如果静态变量不是 public 和 final,它的命名方法和实例变量和本地变量相同。
public class StaticTest {
	
		public static String name;//静态变量
		
		//被static修饰方法,叫静态方法
		public  static void t1() {
			System.out.println("t1这是一个静态方法");
			
			//静态方法可以直接调用静态方法,但不可以引用非静态方法
			t2();
//			t3();
		}
		//不需要创建对象 直接通过类名可以调用
		
		public  static void t2() {
			System.out.println("t2这是一个静态方法");
		}
		
		public   void t3() {
			t2();
			//同一个类中,非静态方法可以直接调用静态方法,非静态方法
			System.out.println("t3这是一个非静态方法");
		}
}
StaticTest.t1();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值