/* 1、注册驱动(DRIVER) 2、建立连接(URL,USER,PASSWORD) 3、编译sql 4、执行sql 5、获得结果集 6、返回 */ /** * 1.常量定义 final,最终、不变,常量标识符全大写 * 2.定义常量类尽量不要用public * 3.需要经常调用的使用static修饰 */ private static final String URL = "jdbc:mysql://127.0.0.1:3306/ylws? serverTimezone=UTC&characterEncoding=utf-8"; private static final String DRIVER = "com.mysql.cj.jdbc.Driver"; private static final String USER = "root"; private static final String PASSWORD = "123456";
JDBC工具类
1 public class JDBCUtils { 2 /* 3 1、注册驱动(DRIVER) 4 2、建立连接(URL,USER,PASSWORD) 5 3、编译sql 6 4、执行sql 7 5、获得结果集 8 6、返回 9 */ 10 11 /** 12 * 1.常量定义 final,最终、不变,常量标识符全大写 13 * 2.定义常量类尽量不要用public 14 * 3.需要经常调用的使用static修饰 15 */ 16 private static final String URL = "jdbc:mysql://127.0.0.1:3306/ylws?serverTimezone=UTC&characterEncoding=utf-8"; 17 private static final String DRIVER = "com.mysql.cj.jdbc.Driver"; 18 private static final String USER = "root"; 19 private static final String PASSWORD = "123456"; 20 21 /* 22 1、建立连接 23 2、执行语句 24 3、返回结果 25 */ 26 private static Connection connection = null; 27 //PreparedStatement比Statement访问速度更快。能防止sql注入 28 private static PreparedStatement preparedStatement = null; 29 private static ResultSet resultSet; 30 31 /** 32 * 建立连接 33 * 只执行一次 34 */ 35 private static Connection getConnection() { 36 try { 37 //利用反射,加载驱动 38 Class.forName(DRIVER); 39 //建立连接 40 connection = DriverManager.getConnection(URL, USER, PASSWORD); 41 /* 42 位运算符:&、|、! 43 逻辑运算符:&&、||、^ 44 单目运算符:~ 45 一、&&和&的区别 46 1、相同点 47 1)&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时, 48 整个运算结果才为true,否则,只要有一方为false,则结果为false。 49 2、不同点 50 1)&&具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式 51 2)&作为为运算时,&是按位与操作,参加运算的两个数据按照二进制位进行“与”运算。 52 二、|| 和 | 的区别 53 1、相同点 54 1)当二者表示或的时候,二者都false则false,只有一个为true的时则true。 55 2、不同点 56 1)|| 也存在短路的问题,当前者为true时,则不会判断后面的表达(与上面的&&类似) 57 2)| 是按位或操作,参加运算的两个数据按照二进制位进行“或”运算。 58 三、~与!的区别 59 1、~是一个单目运算符,用来对一个二进制位按位取反,即0变成1,1变成0,比如~00001111=11110000 60 2、!是逻辑非运算符,!a的意思是:若a为真,则!a为假,若a为假则!a为真。 61 四、逻辑异或^ 62 1、a^b,a 与 b 相异时,结果为 true ,相同为false,例如1^0=1,0^0=0,1^1=0,0^1=1,1表示true 63 */ 64 } catch (SQLException | ClassNotFoundException e) { 65 e.printStackTrace(); 66 } 67 return connection; 68 } 69 70 /** 71 * 执行增加、删除、修改操作 72 * 73 * @param sql sql语句 74 * @return 影响行数 75 */ 76 public static int excuteUpdate(String sql) { 77 getConnection(); 78 int count = 0; 79 try { 80 preparedStatement = connection.prepareStatement(sql); 81 //修改 82 count = preparedStatement.executeUpdate(); 83 } catch (SQLException e) { 84 e.printStackTrace(); 85 } finally { 86 close(); 87 } 88 return count; 89 } 90 91 /** 92 * 执行查询操作 93 * 94 * @param sql sql语句 95 * @return 查询结果 96 */ 97 public static ResultSet getResultSet(String sql) { 98 getConnection(); 99 try { 100 preparedStatement = connection.prepareStatement(sql); 101 //查询 102 resultSet = preparedStatement.executeQuery(); 103 } catch (SQLException e) { 104 e.printStackTrace(); 105 } 106 //在查询结束时关闭 107 // finally { 108 // close(); 109 // } 110 return resultSet; 111 } 112 113 /** 114 * 关闭连接 115 */ 116 private static void close() { 117 if (preparedStatement != null) { 118 try { 119 preparedStatement.close(); 120 preparedStatement = null; 121 } catch (SQLException e) { 122 e.printStackTrace(); 123 } 124 } 125 126 if (connection != null) { 127 try { 128 connection.close(); 129 connection = null; 130 } catch (SQLException e) { 131 e.printStackTrace(); 132 } 133 } 134 if (resultSet != null) { 135 try { 136 resultSet.close(); 137 resultSet = null; 138 } catch (SQLException e) { 139 e.printStackTrace(); 140 } 141 } 142 } 143 144 }