数据库结构图:

JDBC工具包使用

第一种组合 :

  只有官方驱动 mysql-connector-java-5.1.13-bin.jar

包结构:

JDBC工具包使用

 

代码:简单实现增删改查可以自己做一个配置文件工具包,见上一篇文章

  1 package com.jdbc.onlyconnector;
  2 
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.PreparedStatement;
  6 import java.sql.ResultSet;
  7 import java.sql.SQLException;
  8 import java.util.Scanner;
  9 
 10 import org.junit.Test;
 11 
 12 public class ConnectorTest {
 13     @Test
 14     public void test01() throws ClassNotFoundException, SQLException {
 15         //jdbc四大参数,driver的全限命名,url,user,password
 16         String driverClassName = "com.mysql.jdbc.Driver";
 17         String url = "Jdbc:mysql://localhost:3306/db2";
 18         String user = "root";
 19         String password ="123";
 20         /*    
 21          * public class Driver implements java.sql.Driver 
 22          *     获取到Driver的对象(创建驱动),com.mysql.jdbc.Driver类的内部有一个静态代码块,当类被加载时就会调用
 23          * java.sql.DriverManager.registerDriver(new Driver())这个方法
 24          *     该驱动实现了java内部的Driver接口,通过多态传递给驱动管理,进行底层连接
 25          */
 26         Class.forName(driverClassName);
 27         /*
 28          *     通过传递另外三大参数和数据库取得连接,并且返回一个Connection    对象,
 29          * Connection对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息
 30          *     Connection类主要用到的方法  commit 提交上一次修改;   rollback  回滚到数据库(不修改)
 31          *     getAutoCommit() true为自动提交,false为手动事务,默认true
 32          *     createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库,返回值就是一个Statement 对象
 33          *  prepareStatement(String sql) 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
 34          *      注意:prepareStatement extends Statement  两个都是接口  Connection也是接口
 35          */
 36         Connection connection = DriverManager.getConnection(url, user, password);
 37 //        /*
 38 //         *     第一种 :开始
 39 //         *      调用    createStatement() 方法返回一个Statement对象 
 40 //         *     Statement类用于执行静态 SQL 语句并返回它所生成结果的对象。
 41 //         *     Statement类主要用到的方法 
 42 //         *     boolean execute(String sql)执行给定的 SQL 语句,该语句可能返回多个结果。
 43 //         *     ResultSet executeQuery(String sql) 执行给定的 SQL 语句,该语句返回单个 ResultSet 对象 ;(查数据库)
 44 //         *     int executeUpdate(String sql) 执行给定 SQL 语句,
 45 //         *     该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 DDL 语句); (改数据库)
 46 //         */
 47 //            Statement statement = connection.createStatement();
 48 //        /*
 49 //         *     增 数据insert
 50 //         */
 51 //            String zeng = "insert into emp(eid , ename ,did) values (4,'小猪',1)";
 52 //            //返回值是表中受影响的行数
 53 //            int empZeng = statement.executeUpdate(zeng); //返回值是1 代表1行收到影响
 54 //        /*
 55 //         *      删 数据 delete
 56 //         */
 57 //            String shan = "delete from emp where eid = 4";
 58 //            int empShan = statement.executeUpdate(shan);
 59 //        /*
 60 //         *         改  数据update
 61 //         */
 62 //            String gai = "UPDATE emp SET ename = '小红'  WHERE eid = 3 ";
 63 //            int empGai = statement.executeUpdate(gai);
 64 //        /*
 65 //         *      重点:查 数据  select
 66 //         */
 67 //            String cha = "select * from emp";
 68 //            /*
 69 //             *     返回值是ResultSet类的对象,表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
 70 //             *     ResultSet类常用方法 
 71 //             *      boolean next()  将光标从当前位置向前移一行。 (和迭代器差不多)
 72 //             *     int getInt(int columnIndex) 获取索引列的int类型的值  columnIndex 第一列等于1
 73 //             *     String getString(int columnIndex)
 74 //             *     Object getObject(int columnIndex)
 75 //             *     Object getObject(String columnLabel) 获取此 ResultSet对象中当前行中指定列的值
 76 //             *     (columnLabel 指定的列标签。如果未指定 SQL AS 子句,则标签是列名称 )
 77 //             *     String getString(String columnLabel) 获取此 ResultSet 对象的当前行中指定列的值。
 78 //             *     int getInt(String columnLabel)
 79 //             * 
 80 //             */
 81 //            ResultSet empCha = statement.executeQuery(cha);
 82 //            if(empCha!=null) {
 83 //                while(empCha.next()) {
 84 //                    System.out.println(empCha.getInt(1));
 85 //                    System.out.println(empCha.getString("ename"));
 86 //                    System.out.println(empCha.getObject(3));
 87 //                }
 88 //            }
 89 ///*
 90 //  输出结果:
 91 //1
 92 //张三
 93 //1
 94 //2
 95 //李四
 96 //2
 97 //3
 98 //小红
 99 //1
100 // */
101             /*
102              *     第二种 使用preparedStatement
103              */
104         /*
105          *      查数据更加方便 好处:
106          *  1.使用占位符而不是语句拼接,可以防止注入攻击;
107          *  2.语句预编译,执行效率高;
108          */
109         String sql = "select * from emp where eid =?";
110         Scanner sc = new Scanner(System.in);
111         System.out.println("请输入要查找的员工id");
112         int eid =sc.nextInt();
113         PreparedStatement ps = connection.prepareStatement(sql);
114     //setInt(int parameterIndex, int x) parameterIndex占位符下标,第一个是1  x代表占位符的值
115         ps.setInt(1, eid); 
116         //执行语句
117         ResultSet rs = ps.executeQuery();
118         if(!rs.wasNull()) {
119             while(rs.next()) {
120                 System.out.println(rs.getObject(1));
121                 System.out.println(rs.getObject(2));
122                 System.out.println(rs.getObject(3));
123             }
124         }
125 /*
126 执行结果:
127 请输入要查找的员工id
128 1
129 1
130 张三
131 1
132  */
133         
134     }
135 }
View Code

相关文章:

  • 2021-06-04
  • 2021-05-22
  • 2022-01-12
  • 2021-10-01
  • 2022-02-09
  • 2021-11-09
  • 2021-11-09
  • 2021-11-19
猜你喜欢
  • 2022-02-25
  • 2021-07-26
  • 2022-12-23
  • 2021-11-03
  • 2021-11-22
  • 2021-11-09
相关资源
相似解决方案