【0】README

1) 本文文字描述 转自 core java volume 2 , 旨在理解 数据库编程——JDBC 配置 的基础知识 ;
2) update timestamp: 1602022101; 更新内容有: 上传了一些图片, 而且举证说明了 为什么 jdbc.drivers=com.mysql.jdbc.Driver ? 和 为什么 jdbc.url=jdbc:mysql://localhost:3306/testCoreJava ?
3) for source code, please visit : https://github.com/pacosonTang/core-java-volume/tree/master/coreJavaAdvanced/chapter4/JDBCConfig   


【1】数据库URL

1)在连接数据库时, 我们必须使用各种与数据库类型相关的参数,如 主机名, 端口号, 数据库名;
2)JDBC 使用了一种与普通URL 相类似的语法类描述数据源。 下面是这这种语法的两个实例:

jdbc:derby://localhost:8080/corejava;create=true
jdbc:postgresql:corejava

3)JDBC URL 的一般语法为:

jdbc : subprotocol: other stuff

  • 3.1)其中 subprotocol :用于选择连接到 数据库的具体驱动程序;

【2】驱动程序 JAR 文件

1)需要获得包含了 所用数据库的驱动程序的JAR文件;
2)在运行访问数据库的程序时, 需要将驱动程序的 JAR 文件包括到类路径中;
3)在从 命令行启动程序时,只需要使用下面的命令:

java -classpath .: driverPathProgramName


【3】注册驱动器类

1)如果驱动程序JAR文件不支持自动注册,那就需要找出数据库提供商使用的JDBC 驱动器类的名字。典型的驱动器名字如下:

org.apache.derby.jdbc.ClientDriver
org.postgresql.Driver

2)通过使用 DriverManager, 可以使用两种方式来注册驱动器。

  • 2.1)一种方式是在 java 程序中 加载驱动器类, 如:

    Class.forName(“org.postgresql.Driver”);

  • 2.2)方法二: 设置 jdbc.drivers 属性。可以用命令行参数来指定这个属性;

  • 2.3)方法三:或者在应用中设置系统属性:
    System.setProperty("jdbc.drivers", "org.postgresql.Driver");

Attention) 在方法三中可以提供多个驱动器, 用冒号将他们分开, 如

org.postgresql.Driver:org.apache.derby.jdbc.ClientDriver;


【4】连接到数据库

1)打开一个数据库连接, 如:

String drivers = props.getProperty(“jdbc.drivers”);
if (drivers != null) System.setProperty(“jdbc.drivers”, drivers);
String url = props.getProperty(“jdbc.url”);
String username = props.getProperty(“jdbc.username”);
String password = props.getProperty(“jdbc.password”);
return DriverManager.getConnection(url, username, password); // 利用驱动管理器打开一个数据库连接

2)驱动管理器(driver manager): 驱动管理器遍历所有注册过的驱动程序, 以便找到一个能够使用 数据库 URL 中指定的子协议的驱动程序;
3) 看个数据库连接荔枝:

4) source code at a glance

package com.corejava.chapter4;import java.nio.file.*;
import java.sql.*;
import java.io.*;
import java.util.*;public class TestDB
{private static String cur_dir = System.getProperty("user.dir") + File.separator +  "com" + File.separator + "corejava" + File.separator +  "chapter4" + File.separator;public static void main(String args[]) throws IOException{try{runTest();}catch (SQLException ex){for (Throwable t : ex)t.printStackTrace();}}public static void runTest() throws SQLException, IOException{try (Connection conn = getConnection()){Statement stat = conn.createStatement();stat.executeUpdate("CREATE TABLE Greetings ("+ "Message CHAR(20))");stat.executeUpdate("INSERT INTO Greetings VALUES ('Hello, World!')");try (ResultSet result = stat.executeQuery("SELECT * FROM Greetings")){if (result.next())System.out.println(result.getString(1));}stat.executeUpdate("DROP TABLE Greetings");}}public static Connection getConnection() throws SQLException, IOException{Properties props = new Properties();try (InputStream in = Files.newInputStream(Paths.get(cur_dir + "database.properties"))){props.load(in); // 加载数据库连接信息的 .properties 文件}String drivers = props.getProperty("jdbc.drivers"); //数据库驱动器if (drivers != null) System.setProperty("jdbc.drivers", drivers);String url = props.getProperty("jdbc.url");String username = props.getProperty("jdbc.username");String password = props.getProperty("jdbc.password");return DriverManager.getConnection(url, username, password); //利用驱动管理器打开一个数据库连接}
}
jdbc.drivers=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/testCoreJava
jdbc.username=root
jdbc.password=root

Complementary)

  • C1) 为什么 jdbc.drivers=com.mysql.jdbc.Driver ?

    • 以上图片转自:https://dev.mysql.com/doc/connector-j/en/connector-j-installing-classpath.html
  • C2)为什么 jdbc.url=jdbc:mysql://localhost:3306/testCoreJava ?

    • (以上图片转自: Class DriverManager 的 API)


    • (以上图片转自: http://www.artima.com/javaseminars/modules/JDBC/)

      上面红色标注区域的意思是说:
      subprotocol == 驱动器或数据库连接机制名称;
      subname == 识别数据库的方式;


    • (以上图片转自: https://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-connect-drivermanager.html#connector-j-examples-connection-drivermanager)

      所以这些图片 佐证了:
      subprotocol == 驱动器或数据库连接机制名称 == mysql;
      subname == 识别数据库的方式 == 数据库标识符==your database identifier;

数据库编程——JDBC 配置相关推荐

  1. JAVA数据库编程(JDBC技术)-入门笔记

    本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学 ...

  2. Java数据库编程(JDBC)-入门笔记

    数据库(DB) 简介: • DB: Database = Data + Base • 数据库:数据+库,存放数据的库(场所) • 数据:规范.半规范.不规范数据 • 库 – 一个空间,一个场所 – 停 ...

  3. Java的数据库编程:JDBC

    目录 一.JDBC是什么? 二.使用步骤 1.首先将JDBC的包引进java中 2.创建新的类来写代码 3.描述你的服务器 4.设置你的数据库地址,数据库用户名,数据库密码 5.连接数据库 6.书写你 ...

  4. bo服务器idt和bw链接修改,【SAP_BO】关于Universe和IDT链接数据库的JDBC配置

    情况一:Universe链接Oracle(选择客户端链接方式) 开发端:客户端装的BO Client Tool 4.0版本要和Oracle Client要一致,即同为32位或64位 运行时:由于BOE ...

  5. 数据库编程——intro to JDBC

    [0]README 1) 本文文字描述 转自 core java volume 2 , 旨在理解 数据库编程--JDBC 的基础知识 : 2)JDBC起源: 96年, Sun公司发布了 第一版的jav ...

  6. java 核心技术Ⅱ--章五:JDBC数据库编程

    java数据库编程JDBC 简单的jdbc编程示例: public class DBTest {public static void runTest(){Connection conn = null; ...

  7. JDBC 数据库编程基础

    JDBC 数据库编程基础 安装MySQL 进入官网下载页面:https://www.mysql.com/cn/downloads/ 以下红色横线标记的为mysql社区版,是免费的mysql版本: 接下 ...

  8. java基础类库——java数据库编程,JDBC连接(原生数据库连接)(十)

    java数据库编程,JDBC连接(原生数据库连接) JDBC严格来讲不属于一门技术,它属于一种服务.所有的操作流程都是固定的.JDBC是java提供的数据库操作的一个标准(它就是一组相关的标准接口), ...

  9. 数据库编程(一)JDBC篇

    一.jdbc概述 所有的数据库供应商和工具开发商都认为,如果Java能够认为SQL访问提供一套"纯"Java API,同时提供一个驱动管理,以允许第三方驱动程序可以连接到特定的数据 ...

最新文章

  1. C/C++ 整型提升(Integral Promotion)
  2. python实现2048游戏_python实现一个简单的2048游戏
  3. 10th blog:Object
  4. TypeError: ‘BasePermissionMetaclass‘ object is not iterable
  5. c#中contextMenuStrip与datagridview使用CellMouseDown事件及treeview使用mousedown事件
  6. 汇编.s文件包含头文件处理
  7. Linux 目录详细说明
  8. 开源项目工时系统_自研工时管理系统,究竟好不好? | AceTeamwork
  9. windows无法完成格式化U盘的几种终极解决办法
  10. AspNetPager分页控件的使用以及常见错误
  11. axure 7.0 license key
  12. vue-miniQQ——基于Vue2实现的仿手机QQ单页面应用(接入了聊天机器人,能够进行正常对话)...
  13. 相见恨晚的5个资源网站 影视音乐资源随你看
  14. 工具 | Cmder 自定义 aliases 命令
  15. 2021年美国大学生数学建模竞赛(题目详细介绍)
  16. 管道软件_软件管道工的就业市场过热
  17. 3.vue3.2的父传子defineProps,子传父emits以及ref
  18. 如何UNI-APP中使用iconfont彩色图标
  19. ABP官方文档(四十四)【后台作业和后台工人】
  20. S*ST星美(000892):丰盛地产重组事宜形成初步方案

热门文章

  1. HDU - 6071 Lazy Running 同余最短路 + 分层
  2. 【Ynoi2011】成都七中【树论】【点分树】【离线】【树状数组】
  3. FFT:从入门到沉迷
  4. P2498 [SDOI2012]拯救小云公主
  5. P4062 [Code+#1]Yazid 的新生舞会(线段树做法)
  6. Acwing 1084. 数字游戏 II
  7. P3233-[HNOI2014]世界树【虚树,倍增】
  8. jzoj6804-NOIP2020.9.26模拟jerry【dp】
  9. 亿些模板【数论数学】
  10. jzoj5353-村通网【最小生成树】