Java 手写jdbc访问数据库
springboot流行起来后,数据库的操作都由springboot自动装配了,好处是方便,但是有时候我们只需要写一个简单的脚本去访问数据库,相信很多人都不会了!
以下给出具体实现
建立链接
public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {String URL = "jdbc:mysql://127.0.0.1:3306/test";String USER = "root";String PASSWORD = "123456";// 获取数据库连接conn = DriverManager.getConnection(URL, USER, PASSWORD);//todo } catch (SQLException e) {e.printStackTrace();} finally {// 关闭Statement和Connectiontry {if (stmt != null) stmt.close();if (conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}
执行固定sql查询
public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {String URL = "jdbc:mysql://127.0.0.1:3306/test";String USER = "root";String PASSWORD = "123456";// 获取数据库连接conn = DriverManager.getConnection(URL, USER, PASSWORD);// 创建Statement对象stmt = conn.createStatement();// 查询数据String sql = "select * from (" +"select " +"TABLE_SCHEMA as `Database`," +"TABLE_NAME as `Table`," +"GROUP_CONCAT(COLUMN_NAME order by SEQ_IN_INDEX separator ', ') as `Columns`," +"INDEX_NAME as `Index`," +"INDEX_TYPE," +"NON_UNIQUE = 0 as `Is Unique` " +"from information_schema.STATISTICS " +"where INDEX_TYPE = 'BTREE' and NON_UNIQUE = 0 " +"group by TABLE_SCHEMA, TABLE_NAME, INDEX_NAME" +") t " +"where `Index` <> 'PRIMARY' and `Database` = 'test'";java.sql.ResultSet rs = stmt.executeQuery(sql);// 处理查询结果while (rs.next()) {String tableName = rs.getString("Table");String uniqueKeyColumn = rs.getString("Columns");String uniqueKeyName = rs.getString("Index");}} catch (SQLException e) {e.printStackTrace();} finally {// 关闭Statement和Connectiontry {if (stmt != null) stmt.close();if (conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}
执行可变条件查询
PreparedStatement preparedStatement = conn.prepareStatement(" SELECT * " +" FROM INFORMATION_SCHEMA.COLUMNS " +" WHERE TABLE_SCHEMA = ? " +" AND TABLE_NAME = ? " +" AND COLUMN_NAME = ?;");preparedStatement.setString(1, "test");preparedStatement.setString(2, tableName);preparedStatement.setString(3, "tenant_id");ResultSet resultSet = preparedStatement.executeQuery();