import java.sql.*

描述
DriverManager 用于管理一组JDBC驱动程序的基本服务。

注意: JDBC 2.0 API中新增的DataSource接口提供了另一种连接到数据源的方法。
Connection 创建一个 Statement对象,用于将SQL语句发送到数据库
Statement 用于执行静态SQL语句,返回结果集对象ResultSet
ResultSet 获取结果集数据

示例:

 
// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/mydb"; 

// MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
//static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
//static final String DB_URL = "jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";



static final String USER = "root"; // 数据库的用户名与密码,需要根据自己的设置

static final String PASS = "123456";

Connection conn = null;

Statement stmt = null;

try{

	Class.forName(JDBC_DRIVER);// 注册 JDBC 驱动

	conn = DriverManager.getConnection(DB_URL,USER,PASS); // 链接数据库
      
 	stmt = conn.createStatement(); //实例化Statement对象

	String  = "SELECT id, name, url FROM websites"; 

	ResultSet rs = stmt.executeQuery(sql); // 执行查询

 	while(rs.next()){ //获取结果集
 
		int id  = rs.getInt("id"); //获取id字段

		String name = rs.getString("name"); 

		String url = rs.getString("url"); 

	}
	
	// 关闭
	rs.close();
	stmt.close();
	conn.close();

}catch(SQLException se){

	// 处理 JDBC 错误 
	se.printStackTrace();

}catch(Exception e){

 	// 处理 Class.forName 错误 
 	e.printStackTrace();

}finally{

	// 关闭资源 
 	try{
		if(stmt!=null) stmt.close(); 
	}catch(SQLException se2){
		// 什么都不做
	} 

	try{

 		if(conn!=null) conn.close();

 	}catch(SQLException se){

		se.printStackTrace();

	} 
} 




DataSource接口:import javax.sql.*

MySQL8 数据库配置:

1.tamcat服务器安装目录下:conf/context.xml文件添加
也可以在conf/server.xml文件<Host>标签中添加<Context>标签:		

<Resource

name="jdbc/TestDB" <!--JNDI名,数据源名称,TestDB自定义-->

auth="Container" <!--设置由容器来负责资源的连接-->

type="javax.sql.DataSource" <!--数据源对应的名称-->

driverClassName="com.mysql.cj.jdbc.Driver" <!--数据库驱动程序名称-->

url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC"  <!--数据库名称-->

username="root" <!--数据库用户名-->

password="123456" <!--数据库密码-->

maxActive="100"

maxIdle="30" <!--最小保持连接数-->

maxWait="1000"/> <!--最大连接等待时间秒-->

	

2.在web项目中:WEB-INF/web.xml文件,配置引用的连接池资源

<resource-ref>

	<description>Test</description>

	<res-ref-name>jdbc/TestDB</res-ref-name> <!--数据源引用名,JNDI名-->

	<res-type>javax.sql.DataSource</res-type> <!--数据源对应的名称-->

	<res-auth>Container</res-auth> <!--数据源连接方式,由容器来负责资源的连接-->

</resource-ref>



3.编写程序访问数据库

import java.sql. //数据库查询包
import javax.sql.*  //DataSource池连接包
import javax.naming.* //名称查找开发包

DataSource ds=null; 

try{ 

	InitialContext ctx=new InitialContext(); //实例化一个Context对象,javax.naming包

	ds=(DataSource)ctx.lookup("java:comp/env/jdbc/TestDB"); //检索命名对象,固定的:java:comp/env/

	Connection conn=ds.getConnection(); //连接数据库,javax.sql包

	Statement stmt=conn.createStatement(); //实例化Statement对象,java.sql包
	
	String strSql="select * from Login";

	ResultSet rs=stmt.executeQuery(strSql); //执行SQL查询

	while(rs.next())
		out.println(rs.getString(2)); //打输出结果

	
} catch(Exception e){

	out.println(e.getMessage());
 
} finally {

	if(conn!=null)conn.close(); //归还池线程

}
 
 
 
 
 注:
 驱动程序文件(mysql-connector-java-5.1.39-bin.jar或mysql-connector-java-8.0.15.jar等文件)一定要放在TOMCAT的lib目录下,放在应用程序对应的lib目录下不行。