准备工作
mysql创建demo库:
简单建个表:
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
搭建maven项目,引入mysql-connector-java
<properties>
<mysql.version>8.0.20</mysql.version>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>
jdbc四步曲
加载驱动
Class.forName(driver);
建立连接
connection = DriverManager.getConnection(url,username,password);
执行sql
statement = connection.prepareStatement(sql);
// int res = statement.executeUpdate(); //增删改
ResultSet resultSet = statement.executeQuery(); //查询
关闭资源
resultSet.close();
statement.close();
connection.close();
demo
public class RunDemo {
private static String driver = "com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong";
private static String username = "root";
private static String password = "123456";
static {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// String sql = "insert into user (name) values ('张三')";
String sql = "select * from user";
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet =null;
try {
connection = DriverManager.getConnection(url,username,password);
statement = connection.prepareStatement(sql);
// int res = statement.executeUpdate(); //增删改
// System.out.println("执行成功,改变行数:"+res);
ResultSetMetaData resultSetMetaData = statement.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
resultSet = statement.executeQuery(); //查询
List<Map<String,Object>> res = new ArrayList<>();
while(resultSet.next()){
Map<String,Object> objmap = new HashMap<>();
//这个地方比较坑,resultSetMetaData和resultSet的下标居然是从1开始的
for(int i=1;i<=columnCount;i++){
objmap.put(resultSetMetaData.getColumnName(i),resultSet.getObject(i));
}
res.add(objmap);
}
System.out.println(res.get(0));
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}