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 }