加连预执释

  1 package com.day520.station.dao;
  2 
  3 import com.mysql.jdbc.Driver;
  4 import org.junit.Test;
  5 
  6 import java.sql.Connection;
  7 import java.sql.DriverManager;
  8 import java.sql.ResultSet;
  9 import java.sql.Statement;
 10 
 11 /**
 12  * Created by Administrator on 2018/5/20.
 13  */
 14 public class ProductDao {
 15     //持久层需要完成增删改查
 16     //1.增加一个产品,包括名称和卖价
 17     public void save(String productName,int salePrice){
 18         System.out.println(".....我是增加方法.....");
 19         System.out.println("productName="+productName+",salePrice="+salePrice);
 20         try {
 21             //1.加载
 22             Class.forName("com.mysql.jdbc.Driver");
 23             //2.连接
 24                //static Connection getConnection(String url, String user, String password)
 25                //试图建立到给定数据库 URL 的连接。
 26             Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dome", "root", "admin");
 27                //DriverManager.getConnection--->Connection connection = DriverManager.getConnection
 28                //这一步叫拿到连接对象
 29             //3.创建编译语句
 30                // Statement createStatement()
 31                //创建一个 Statement 对象来将 SQL 语句发送到数据库。
 32             Statement statement = connection.createStatement();
 33                //用连接对象connection来拿到创编语句createStatement,生成statement对象
 34             //4.执行
 35                // int executeUpdate(String sql)
 36                // 执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
 37             String sql="INSERT INTO product(product_name,sale_price) VALUES ('苹果手机123',5000)";
 38             statement.executeUpdate(sql);//对象.方法,第3步创建了statement对象,第4步调用方法
 39                                          //方法是int executeUpdate(String sql)
 40             //5释放资源.
 41                //关闭是有顺序的,从下到上,即与先后调用的顺序相反的顺序关闭
 42             statement.close();//释放掉statement对象
 43             connection.close();//释放掉connection对象
 44         } catch (Exception e) {
 45             e.printStackTrace();
 46         }
 47 
 48     }
 49     //2.删除方法,根据ID删除
 50     public void delete(int id){
 51         System.out.println("id="+id);
 52     }
 53     //3. 根据ID修改名称
 54     public void update(int id,String productName){
 55         System.out.println("id="+id+",productName="+productName);
 56     }
 57     //4.查询
 58     //查询是有返回值的,没有参数的;增删改是使用参数进行增删改,所以不需要返回值
 59     public String query(){
 60 
 61         try {
 62             //1.加载
 63             Class.forName("com.mysql.jdbc.Driver");
 64             //2.连接
 65             Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dome", "root", "admin");
 66             //3.创建编译语句
 67             Statement statement = connection.createStatement();
 68             //4.执行语句
 69             String sql="SELECT id,product_name,sale_price FROM product WHERE id=8";
 70             //ResultSet executeQuery(String sql)
 71             //执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
 72             ResultSet resultSet = statement.executeQuery(sql);//查询肯定要拿到返回结果的
 73                 // statement.executeQuery(sql)-->ResltSet resultSet = statement.executeQuery(sql)
 74                 //所有查询的信息都在resultSet里,所以需要解析它
 75                 //解析结果
 76             while (resultSet.next()) {//判定是否有这条数据,如果有就执行里边
 77                 //int getInt(String columnLabel)
 78                 //以 Java 编程语言中 int 的形式获取此 ResultSet 对象的当前行中指定列的值。
 79                 //给一个key,即传递一个参数给电脑,告诉它执行的是那一列。
 80                 //传递3个参数如下
 81                 int id = resultSet.getInt("id");
 82                 // String getString(String columnLabel)
 83                 //以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值。
 84                 String productName = resultSet.getString("product_name");
 85                 int salePrice = resultSet.getInt("sale_price");
 86                 System.out.println("id="+id+"productName="+productName+"salePrice="+salePrice);
 87             }
 88             resultSet.close();
 89             statement.close();
 90             connection.close();
 91 
 92         } catch (Exception e) {
 93             e.printStackTrace();
 94         }
 95 
 96         return "小米";
 97 
 98     }
 99     //调用同一个类时的方法的写法
100     @Test
101     public void testSave(){
102         save("小米", 998);//调用方法需要传入参数
103 
104     }
105 
106 
107 }
View Code
 1 package com.day520.station.testDao;
 2 
 3 import com.day520.station.dao.ProductDao;
 4 import org.junit.Test;
 5 
 6 /**
 7  * Created by Administrator on 2018/5/20.
 8  */
 9 public class TestProductDao {
10 
11     /**
12      * 测试保存方法
13      */
14     @Test
15     public void testSave(){
16         //在没有new对象的时候,save会报红
17         // cannot resolve method 'save(java.lang.String,int)'   不能决定方法
18         //即不同类之间调用方法,需要先拿到对象,new对象
19         //1.new  拿到对象
20         ProductDao productDao = new ProductDao();
21         //ProductDao(这个是类名) productDao(这个是变量名) = new ProductDao(); 如:int a =5;
22         //2.用对象“ . ”对应的方法,即调用dao对象的方法
23         //为什么要“对象.方法”呢,这是一种确定调用那个类里边的那个方法的一种方式
24         //不如此就会出现调用了其他类的同名方法的情况,当然系统不会同意这样调用,会报错
25         productDao.save("小米",998);//调用方法需要传入参数
26 
27     }
28     @Test
29     public void testDelete(){
30         //拿到对象
31         ProductDao productDao = new ProductDao();//这条代码与之前save的是一样的
32         //这条代码与之前save的是一样的,所以可以把它放到最前面,然后这句就可以删除了,当然同时存在也不会报错。
33         //调用dao对象的方法
34         productDao.delete(12);
35 
36     }
37     @Test
38     public void testUpdate(){
39         //拿到对象,new
40         ProductDao productDao = new ProductDao();
41         //调用dao对象的方法
42         productDao.update(5,"华为");
43     }
44     @Test
45     public void testQuery(){
46         //拿到对象,new
47         ProductDao productDao = new ProductDao();
48         //调用dao对象方法
49         String query = productDao.query();
50         System.out.println("query="+query);
51     }
52 
53 
54 }
View Code