Connection:Connection是Java与数据库的连接对象。
1.Connection的两大作用
1)创建执行SQL语句的对象
通过Connection可以获得三种类型的语句对象。 - Statement :执行SQL - CallableStatement :执行数据库中存储过程 - PreparedStatement :执行SQL.对SQL进行预处理。解决SQL注入漏洞。
2)管理事务
通过Connection可以开启事务。
2.如何获取Connection对象
通过 DriverManager.getConnection(URL, USER, PASS)方法来获取连接对象。例如:
String URL = "jdbc:mysql://localhost:3306/myschool?useUnicode=true&characterEncoding=UTF-8";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);
其中,URL表示要连接的数据库的URL地址。语法如下:
注意:不同数据库的jdbc URL 写法不同。见下表:
| 数据库 | URL格式 |
|---|---|
| MySQL | jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 |
| MSSQL | jdbc:sqlserver://localhost:1433;databaseName=test |
| Oracle | jdbc:oracle:thin:@localhost:1521:orcl |
3.通过读取属性文档获取连接对象
在实际项目开发时很少把URL,USERNAME,PASSWORD这三个参数配置在源代码里,因为这样做不利于项目的维护和扩展。通常把数据库的连接写在配置文档里面,这样我们只需要打开配置的开关,就可以很灵活的切换数据库。
实例:
在src根目录下,创建jdbc.properties.

编辑jdbc.properties,内容如下:
#MYSQL
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/myschool?useUnicode=true&characterEncoding=UTF-8
username=root
password=root
maxActive=50
maxIdle=20
maxWait=60000
#MSSQLServer
#driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
#url=jdbc:sqlserver://localhost:1433;databaseName=myschool
#username=sa
#password=sa
#maxActive=50
#maxIdle=20
#maxWait=60000
#ORACLE
#driverClassName=oracle.jdbc.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:myschool
#username=scott
#password=tiger
#maxActive=50
#maxIdle=20
#maxWait=60000
这里在属性文档里面配置了三种不同的数据库连接配置,默认使用MySQL,其它两种注释掉。 新建util包,创建数据库工具类DBUtil。这里使用到了设计模式中的懒汉模式。
package util;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class DBUtils {
private static Connection conn = null;
private static String url =null;
private static String username = null;
private static String password = null;
private DBUtils(){
}
static{
try
{
Properties pro = new Properties();
InputStream in = DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
pro.load(in); //读取属性文档配置信息
String driverClassName = pro.getProperty("driverClassName");
Class.forName(driverClassName);
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public static Connection getConnection ()throws Exception
{
if(conn==null){
conn = DriverManager.getConnection(url,username,password);
}
return conn;
}
}
编写测试类。
public class DBUtilTest {
public static void main(String[] args) {
try {
Connection conn1 = DBUtils.getConnection();
Connection conn2 = DBUtils.getConnection();
if(conn1!=null){
System.out.println("MySQL连接成功!");
}else{
System.out.println("MySQL连接失败!");
}
System.out.println(conn1 == conn2);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
运行结果:
MySQL连接成功!
true
说明工具类可正常获取连接对象,并且是单例模式。