JDBC-如何连接数据库

使用JDBC,我们能够利用不同的数据库驱动来创建于数据库的连接,进而实现数据库的各种操作。
本文共列举了四种方式,四种方法逐渐完善前一种的缺点,所以第四种是最好的也是最常用创建连接方式。

方式一

  1. 使用Driver获取一个实例对象。

  2. 使用 Driver 的 connect() 方法 返回一个Connection的实例对象,有这个实例对象就创建了连接.

    **connect()的参数需要一个url和info,url是数据库的目标,info是一个properties对象,需要有user和password两个参数,用作连接数据库的用户和密码。

    缺点:

    这个com.mysql.jdbc.Driver类,不是属于java本身的,是第三方库,导致的问题就是如果在编译前引入第三方库,将会导致编译失败.

//方式一
@Test
public void test1() throws SQLException {
    Driver driver = new com.mysql.jdbc.Driver();
    String url = "jdbc:mysql://localhost:3306/test";
    Properties info = new Properties();
    info.setProperty("user","root");
    info.setProperty("password","root");
    Connection conn = driver.connect(url, info);
    System.out.println(conn);
}

方式二

在第一种方式的基础上,使用反射获取Driver类的实例,其他地方一样

//方式二
@Test
public void test2() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
    //1.获取Driver实现类对象,利用反射
    Class clazz = Class.forName("com.mysql.jdbc.Driver");
    Driver driver = (Driver)clazz.newInstance();
    String url = "jdbc:mysql://localhost:3306/test";
    Properties info = new Properties();
    info.setProperty("user","root");
    info.setProperty("password","root");
    Connection conn = driver.connect(url, info);
    System.out.println(conn);
}

方式三

在第二种方式的基础上,使用DriverManager的getConnection()方法获取Connection实例

  1. 利用反射获取一个Driver实例对象。

  2. 用DriverManager的 静态方法registerDriver() 注册这个数据库驱动Driver。(可以省略,原因是在Driver实例化的时候,其源码中有一个静态代码块,执行了这一注册操作)。

  3. 用DriverManager的getConnection()方法获取Connection实例对象。

getConnection需要三个String类型的参数:

url:指向数据库目标地址

user:登录数据库用户名

password:登录用户密码

缺点

但是这种方式还是不够好,因为在编译后,类似于url,user,password这类参数将不能修改,一般情况,我们将编译好的项目部署在服务器上时,需要修改这些参数就只能重新编译,但这样往往不显示,一个项目可能有很多个模块很复杂,这样非常不利于开发工作。

@Test
public void  test3() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
    Driver driver = (Driver) Class.forName("com.mysql.jdbc.Driver").newInstance();
    String url = "jdbc:mysql://localhost:3306/test";
    String user = "root";
    String password = "root";
    DriverManager.registerDriver(driver);
    Connection conn = DriverManager.getConnection(url, user, password);
    System.out.println(conn);
}

方式四(最常用)

改进第三种方式的缺点,选择从本地加载配置文件,便于编译后也能随便修改参数。此外,还有一个好处,对于不会代码的人来说,直接在代码层面修改数据库的参数很危险,但是修改配置文件却不难。

1.获取类加载器,引入配置文件输入流。

2.实例化Properties对象,将配置文件内容加载进去.。

3.将配置文件中指定的Driver类载入内存(重要!重要!重要!)。

4.用DriverManager的静态方法getConnection() 获取Connection对象实例。

@Test
public void test4() throws IOException, ClassNotFoundException, SQLException {
    InputStream is = Test1.class.getClassLoader().getResourceAsStream("jdbc.properties");
    Properties pros = new Properties();
    pros.load(is);
    String user = pros.getProperty("user");
    String password = pros.getProperty("password");
    String url = pros.getProperty("url");
    String driverClass = pros.getProperty("driverClass");

    //加载驱动
    Class.forName(driverClass);

    //获取链接
    Connection conn = DriverManager.getConnection(url,user,password);
    System.out.println(conn);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浔汐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值