jdbc mysql demo_JDBC_demo:java连接mysql过程

1.任何数据库驱动程序都提供对java.sql.Driver接口的驱动类,mysql-connector-java-5.1.39-bin.jar中Driver:

packagecom.mysql.jdbc;importjava.sql.DriverManager;importjava.sql.SQLException;public class Driver extendsNonRegisteringDriverimplementsjava.sql.Driver

{publicDriver()throwsSQLException

{

}static{try{

DriverManager.registerDriver(newDriver());

}catch(SQLException E) {throw new RuntimeException("Can't register driver!");

}

}

}

实际上Class.forName("com.mysql.jdbc.Driver")--->DriverManager.registerDriver(new Driver())。java.sql.DriverManager类是JDBC的管理层,负责管理JDBC驱动程序的基本服务。在DriverManager中Driver被包装为DriverInfo类,存储在:

private final static CopyOnWriteArrayList registeredDrivers = new CopyOnWriteArrayList<>();

2.Connection con= DriverManager.getConnection(url,"user","pass");遍历存储在registeredDrivers中的DriverInfo,调用各自的connect()。

for(DriverInfo aDriver : registeredDrivers) {//If the caller does not have permission to load the driver then//skip it.

if(isDriverAllowed(aDriver.driver, callerCL)) {try{

println(" trying " +aDriver.driver.getClass().getName());

Connection con=aDriver.driver.connect(url, info);if (con != null) {//Success!

println("getConnection returning " +aDriver.driver.getClass().getName());return(con);

}

}catch(SQLException ex) {if (reason == null) {

reason=ex;

}

}

}else{

println(" skipping: " +aDriver.getClass().getName());

}

}

3.com.mysql.jdbc.Driver继承NonRegisteringDriver,实际的connect在com.mysql.jdbc.NonRegisteringDriver.connect()中实现,方法返回类型为java.sql.Connection。

publicjava.sql.Connection connect(String url, Properties info)throwsSQLException

{if (url == null) {throw SQLError.createSQLException(Messages.getString("NonRegisteringDriver.1"), "08001", null);

}if (StringUtils.startsWithIgnoreCase(url, "jdbc:mysql:loadbalance://"))returnconnectLoadBalanced(url, info);if (StringUtils.startsWithIgnoreCase(url, "jdbc:mysql:replication://")) {returnconnectReplicationConnection(url, info);

}

Properties props= null;if ((props = parseURL(url, info)) == null) {return null;

}if (!"1".equals(props.getProperty("NUM_HOSTS"))) {returnconnectFailover(url, info);

}try{returnConnectionImpl.getInstance(host(props), port(props), props, database(props), url);

}catch(SQLException sqlEx)

{throwsqlEx;

}catch(Exception ex) {

SQLException sqlEx= SQLError.createSQLException(Messages.getString("NonRegisteringDriver.17") + ex.toString() + Messages.getString("NonRegisteringDriver.18"), "08001", null);

sqlEx.initCause(ex);throwsqlEx;

}

}

4.那么mysql-connector-java-5.1.39-bin.jar中具体是怎么执行sql的,怎么学习,有哪些书可以看呢???

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

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

相关文章

Java中发邮件的6种方法

2019独角兽企业重金招聘Python工程师标准>>> 1.官方标准JavaMail Sun&#xff08;Oracle&#xff09;官方标准&#xff0c;功能强大&#xff0c;用起来比较繁琐。 官方资料&#xff1a;http://www.oracle.com/technetwork/java/javamail/index.html 2.第三方实现…

查询字符串某个字符的个数

select len(05011045)-len(replace(05011045,0,))转载于:https://www.cnblogs.com/zwc-blog/p/3787888.html

假定Csomething是一个类,执行下面这些语句后,内存里创建了几个Csomething对象

假定Csomething是一个类&#xff0c;执行下面这些语句后&#xff0c;内存里创建了几个Csomething对象 Csomething a(); Csomething b(2); Csomething c[3]; Csomething &ra b; Csomething d b; Csomething *pA c; Csomething *p new Csomething(4); Csomething a();/…

用mongo实现mysql视图_浅谈 MongoDB 的视图

2018 年 9 月 18 日&#xff0c;由 Robert Gravelle 撰写在关系数据库中&#xff0c;视图是由查询定义的可搜索数据子集。视图有时被称为“虚拟表”&#xff0c;因为它们不存储数据&#xff0c;但可以像表一样被查询。MongoDB 最近在版本 3.4 中引入了视图。在今天的文章中&…

将DataTable 数据插入 SQL SERVER 数据库

原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库&#xff1a;一&#xff1a;使用sqlcommand.executenonquery()方法插入 foreach (DataRow datarow in datatable.Rows) { string sql "INSERT INTO [Table_1] ([…

如何在WinForm中发送HTTP请求

Winform窗体中发送HTTP请求手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法手工发送HTTP的GET请 求: 1 string strURL "http://localhost/Play/CH1/Service1.asmx/doSearch?keyword";2 strURL this.textBox1.Text;3 System.Net.HttpWebRequest reques…

mysql两列取小_mysql – 我想获取两列特定列之间的列值

如果我理解正确,我认为你不能用一个查询来做到这一点.您可以尝试使用以下内容.添加了对代码的评论.SET schema database_name_here; -- Database nameSET table table1; -- Table nameSET startColumn column_start;SET endColumn column_end;-- First get the position of…

struts2.1.6教程二、struts.xml配置及例程

1.配置文件的优先级 在struts2中一些配置&#xff08;比如常量&#xff09;可以同时在struts-default.xml&#xff08;只读性&#xff09;&#xff0c;strtus-plguin.xml&#xff08;只读性&#xff09;&#xff0c;struts.xml&#xff0c;struts.properties和web.xml文件中配置…

Linux 压缩和解压命令

tar.gz&#xff1a; 压缩&#xff1a; tar -zcvf 压缩后的包名.tar.gz 压缩的目录 zcvf &#xff1a; z 压缩成gz的后缀 c 创建压缩包 t 查看压缩包内容 v 显示压缩过程(输出压缩的文件) f 固定参数 后边接压缩包 解压&#xff1a; tar -zxvf 压缩包名称.tar.gz [-C 目…

spring注解配置quartz

常规配置quartz可以参考我的另外一篇博文:http://www.cnblogs.com/yangzhilong/p/3349116.html spring配置文件里增加&#xff1a; 命令空间&#xff1a; http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd 配…

java char 空_2020重新出发,JAVA入门,数据类型

数据类型通过上一节&#xff0c;明白了变量就是申请内存来存储值&#xff0c;即当创建变量的时候&#xff0c;需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间&#xff0c;确定了变量的类型&#xff0c;即确定了数据需分配内存空间的大小&#xff0c;数据…

域控制器

1. Server01上创建域控制器&#xff1a;域名uec.com DNS和本机在同一台机器上。2. Server02 创建现有域的额外控制器&#xff0c;同时在本机生成DNS区域&#xff0c;检查DC间复制状态。卸载域控制器&#xff1a;域的备份还原:实例: 域的备份 对当前UEC.COM的域控制器Ser…

u-boot启动参数命令格式

指令功能nand info显示可使用的 Nand Flashnand device [dev]显示或设定当前使用的 Nand Flashnand read addr off sizeNand Flash 读取命令&#xff0c;从 Nand 的 off 偏移地址处读取 size 字节的数据到 SDRAM 的 addr地址。nand write addr off sizeNand Flash 烧写命令&…

iOS7下隐藏status bar的详细研究

info.plist文件中&#xff0c;View controller-based status bar appearance项设为YES&#xff0c;则View controller对status bar的设置优先级高于application的设置。为NO则以application的设置为准&#xff0c;view controller的prefersStatusBarHidden方法无效&#xff0c;…

产品经理应该mysql_数据库对产品经理的重要性

产品经理在设计产品的过程中基本上都在和数据打交道&#xff0c;对产品数据存储结构设计的了解可以帮助产品经理建立产品的数据模型&#xff0c;数据模型就是数据在服务器中存储结构的设计&#xff0c;功能层上看到的是一个个根据用户场景设计的功能&#xff0c;但是实际上在数…

实验一报告

北京电子科技学院&#xff08;BESTI&#xff09; 实 验 报 告 课程&#xff1a;Java   班级&#xff1a; 1352    姓名&#xff1a;谈愈敏   学号&#xff1a;20135220 成绩&#xff1a;   指导教师&#xff1a;娄嘉鹏       实验日期…

mysql中下杠怎么打_怎么打字母下方的短横杠?,下横杠怎么打

下横杠怎么打,怎么打字母下方的短横杠?对于电脑操作&#xff0c;大多数成年人不及现在的孩子们。今天看到同事在编辑一篇文档&#xff0c;需要在字母下面打一条短横杠&#xff0c;如下图所示。但是同事怎么也打不出来&#xff0c;坐在旁边的他的孩子&#xff0c;看着有点不耐烦…

云计算解决方案——电信行业

2019独角兽企业重金招聘Python工程师标准>>> 云计算解决方案——电信行业 由于业务的快速发展&#xff0c;电信运营商每年要采购大量的服务器和存储设备&#xff0c;这些资源闲置或者偶尔被使用&#xff0c;造成大量的投资浪费。解决这一问题最好的方法是在企业内部…

怎么让织梦文章按照权重排序

在网站列表页中排列的顺序是可以用织梦标签来控制的&#xff0c;也可以自定义文章排列方式&#xff0c;也有很多人想要网站根据自己的想法来罗列文章&#xff0c;所以最好的方法就是按照权重排序&#xff0c;这样只要修改文章的权重就可以让排列到自己想要的位置上。 在织梦论坛…

华硕主板装系统蓝屏_华硕笔记本电脑重装系统后蓝屏怎么办

华硕笔记本电脑重装系统后蓝屏怎么办?笔记本重装系统后蓝屏怎么办&#xff0c;之前笔记本系统很慢很慢&#xff0c;想重新安装一下操作系统&#xff0c;重新安装的是Windows 7的系统&#xff0c;使用的是Ghost系统盘&#xff0c;为什么重新安装玩系统之后蓝屏了&#xff0c;其…