main方法连接mysql数据库测试
使用jdbc连接数据库
基础准备:
JDK1.8 、 mysql8.0、 mysql-connector-java-8.0.16.jar
实现代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Connection conn = null ;
List list = new ArrayList();
try{
//加载JDBC驱动程序:
Class.forName("com.mysql.cj.jdbc.Driver");
// 问号后面是解决中文乱码输入问题,UTC是统一标准世界时间
String url = "jdbc:mysql://localhost:3306/dbo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
String username = "abc123";
String password = "abc123";
// 创建与MySQL数据库的连接类的实例
conn = DriverManager.getConnection(url, username, password);
// 用conn创建Statement对象类实例
Statement sql_statement = conn.createStatement();
// sql拼装
// String sql = " insert into students (name, age, no) values ('张三', 20, '00001') " ;
String sql = " select * from students " ;
// 执行sql
ResultSet result = sql_statement.executeQuery(sql);
// int num = sql_statement.executeUpdate(sql);
// System.out.println("返回结果:"+num);
//处理结果
int column = result!=null? result.getMetaData().getColumnCount() : 0;
// 一行数据
while (result.next()) {
// 对象数组,表示一行数据
Map map = new HashMap();
for (int i = 1; i <= column; i++) {
// 获得列名
String columnName = result.getMetaData().getColumnName(i);
map.put(columnName, result.getObject(columnName));
}
list.add(map);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (conn != null) {
// 关闭连接
try {
conn.close();
}
catch (Exception e) {
System.out.println("连接关闭异常");
}
}
}
System.out.println(list);
}
}
注意事项:
一些特别处理过的语句返回多个结果,execute 方法处理这些复杂的语句;executeQuery 和 executeUpdate 处理形式更简单的语句。
execute 方法返回一个 boolean 值,以指示第一个结果的形式。必须调用 getResultSet 或 getUpdateCount 方法来检索结果,并且必须调用 getMoreResults 移动到任何后面的结果。
返回:
如果第一个结果是 ResultSet 对象,则返回 true;如果第一个结果是更新计数或者没有结果,则返回 false
意思就是如果是查询的话返回true,如果是更新或插入的话就返回false了;所以执行插入或更新语句应该使用executeUpdate。