数据库编程——JDBC 配置

【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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用互联网了解的两个月里_我两个月来对Quarkus的了解

使用互联网了解的两个月里又一年,另一个来临,我很荣幸再次开启围绕Java,语言,生态系统和朋友的24篇精彩博客文章的统治,这些博客文章将我们所有人带入了今年最安静的假期。 这已经是第五年了(我只错过了201…

javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)

【0】README 0.1) 本文旨在给出 java.lang.IllegalArgumentException 异常的原因 和 处理方法, 该异常和 javah 没有半毛钱关系 ; 0.2) 本文附带地给出了 javah 的作用 和 java 调用本地代码(如 C语言)的…

使用阿里巴巴json映射_使用JSON模式验证来映射稀疏JSON

使用阿里巴巴json映射在本文中,我们将探讨在创建和共享API时出现的问题。 特别是,需要: 表达数据的结构 提供对该数据的验证 允许将来改变主意 通过您拥有的部分数据与客户进行沟通 缺少数据时填写空白 人们通常使用版本编号的API解决此…

本地方法(JNI)——从java 程序中调用C函数

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法——从java 程序中调用C函数 的基础知识 ; 2) for source code, please visit https://github.com/pacosonTang/core-java-volume/tree/master/co…

Hadoop入门(一)概念与单机安装

一、hadoop的概念 (1)什么是大数据 大数据是不能用传统的计算技术处理的大型数据集的集合。它不是一个单一的技术或工具,而是涉及的业务和技术的许多领域。 (2)hadoop的定义 Hadoop是一个由Apache基金会所开发的分布式…

螺旋测微器 flash_使用测微计收集应用程序指标

螺旋测微器 flash什么是Micrometer? Micrometer是一个简单的外观,用于以供应商中立的方式收集Java应用程序中的指标。 您可以考虑使用SLF4J作为指标。 Micrometer内置了对许多不同指标后端的内置支持,包括Atlas,Datadog&#xff0…

java JNI调用C语言动态链接库(java.lang.UnsatisfiedLinkError: no yourClassName in java.library.path 异常的解决方法)

转自: http://watershitter.iteye.com/blog/477615今天花了至少3个小时跑这个java调c的动态链接库的Hello,native world的程序。 把所有犯的错误和要点总结一下! 1 java 中 c语言函数的声明 public native static void greeting(); //就像是接口声明一样…

Hadoop入门(二)集群安装

一、集群安装条件前置 在虚拟机上先准备一个机子 按用前面【安装单机hadoop】 已完成安装jdk,hadoop和ssh、网络等配置环境等。 虚拟机和操作系统 环境:ubuntu14 hadoop2.6jdk1.7ssh 虚拟机:(vmware10) 二、集群安装环境设置…

poj doubles_余数运算符在Java中用于Doubles

poj doubles我在OSU任教已近两年了,这总是令我惊讶,我从学生那里学到了多少。 例如,过去, 我让学生写一些我不理解的奇怪代码 。 在这一点上,即使经过300多个博客文章, 几个YouTube视频 ,甚至还…

面向对象与面向过程

一、面向过程编程 面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向过程编程,数据和对数据的操作是分离的。二、面向对象编程 面向对象编程是将事物对象化,通过对象通信来解决问题。面…

本地方法(JNI)——数值参数与返回值

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法(JNI)——数值参数与返回值 的基础知识 ; 2) for source code, please visit https://github.com/pacosonTang/core-java…

class employe_Java 8 –集合sort()方法–按Employe对象(Id,名称,年龄)列出自定义排序示例

class employe有关在Java中对自定义对象进行排序的完整指南。 Collections.sort()方法基于Comparable或Comparator实现进行排序。 用于对Employee对象进行排序的示例自定义排序 1.简介 在本教程中,您将学习如何在java中对Custom对象进行排序…

Spring入门(一)之简介

一、Spring定义 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。 简单来说,Spring是一个分层的JavaSE/javaEE full-stack(全栈的) 轻量级开源框架。 二、Spring框架特征 (1&#xff…

本地方法(JNI)——访问域+字符串参数

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法(JNI)——访问域字符串参数 的基础知识 ; 2) for source code, please visit https://github.com/pacosonTang/core-java…

aws上负载均衡器标组端口_AWS CloudFormation:目标组没有关联的负载均衡器

aws上负载均衡器标组端口昨天,我使用AWS CloudFormation模板最终创建了ECS服务(Fargate类型),还创建了包括应用程序负载均衡器,目标组和IAM角色的资源。 创建堆栈时,出现以下错误: 具有target…

Spring入门(二)之下载与安装

一、Spring下载 参考其他博客:http://www.cnblogs.com/yjmyzz/p/3847364.html或http://blog.csdn.net/xinzhujin/article/details/54319043 Spring下载地址为:http://repo.spring.io/release/org/springframework/spring/ 二、压缩包下的SpringFramewo…

HttpClient 4 API –获取状态代码-getStatusLine()。getStatusCode()示例

在HttpClient API中获取状态代码的快速指南。 getStatusLine()。getStatusCode()示例和相关的错误。 1.简介 在这个非常快速的教程中,我将展示如何使用HttpClient 4获取和验证HTTP响应的StatusCode。 2. Maven依赖 要…

Spring入门(三)之IoC

一、IoC定义IoC,即控制反转。开发者在使用类的实例之前,需要先创建对象的实例。但是IoC将创建实例的任务交给IoC容器,这样开发应用代码时只需要直接使用类的实例,这就是IoC。在讨论控制反转这个概念的过程中,Martin Fo…

云服务器的优点和缺点_为什么要使用云计算? 的优点和缺点

云服务器的优点和缺点在过去的几年中,云计算一直是IT界的热门话题。 像许多事物一样,当它第一次出现时,很多人都将其视为下一件大事,但是云计算确实达到了期望,并真正改变了当今信息技术业务部门的运作方式。 云计算由…

本地方法(JNI)——编码签名

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法(JNI)——编码签名 的基础知识 ; 【1】编码签名相关 1) 混编规则:为了访问实例域和调用用 java 定义的方法&a…