jdbc 订阅
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。 展开全文
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
信息
简    称
JDBC
类    别
应用程序接口
中文名
Java数据库连接
外文名
Java Database Connectivity
Java数据库连接程序类型
JDBC驱动程序共分四种类型:JDBC-ODBC桥这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。本地API驱动这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。网络协议驱动这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。本地协议驱动这种类型的驱动使用Socket,直接在客户端和数据库间通信。
收起全文
精华内容
参与话题
问答
  • JDBC执行过程

    千次阅读 多人点赞 2017-10-16 22:25:58
    JDBC

    1、加载驱动

    Class.forName("com.mysql.jdbc.Driver").newInstance(); 

    2、建立连接

    String url="jdbc:mysql://localhost:3306/testDB?user=root&password=root&useUnicode=true&characterEncoding=gb2312"; 
    Connection conn=DriverManager.getConnection(url);

    3、执行Sql语句

    //建立Statement对象 
    Statement stmt=conn.createStatement(); 
    //执行SQL查询
    String sql="select * from users"; 
    ResultSet rs=stmt.executeQuery(sql);
    
    //建立PreparedStatement对象 
    String sql="select * from user where userName=? and password=?"; 
    PreparedStatement pstmt=Conn.prepareStatement(sql); 
    pstmt.setString(1,"admin"); 
    pstmt.setString(2,"liubin"); 
    //执行动态SQL查询 
    ResultSet rs=pstmt.executeQuery(); 
    
    //执行insert update delete等语句,先定义sql 
    stmt.executeUpdate(sql); 

    4、访问结果记录集ResultSet

    while(rs.next) 
    { 
        out.println("你的第一个字段内容为:"+rs.getString("Name")); 
        out.println("你的第二个字段内容为:"+rs.getString(2)); 
    } 

    5 关闭数据库
    依次将ResultSet、Statement、PreparedStatement、Connection对象关闭,释放所占用的资源。

      rs.close(); 
      stmt.clost(); 
      pstmt.close(); 
      con.close(); 
    展开全文
  • JDBC

    千次阅读 2018-05-04 16:49:46
     JDBC原来只是个商标名称,不是缩写;不过,JDBC通常被认为是“Java数据库连接”的代名词。最初,JDBC是数据源访问API的唯一商标名称,但最近Java DataBase Connectivity已被添加为第二个商标名称。  JDBC API是...

    简介
        JDBC原来只是个商标名称,不是缩写;不过,JDBC通常被认为是“Java数据库连接”的代名词。最初,JDBC是数据源访问API的唯一商标名称,但最近Java DataBase Connectivity已被添加为第二个商标名称。
        JDBC API是一个用来访问几乎任何表格型数据的Java API,它使用JDBC driver与数据库连接。一个JDBC driver是允许JDBC连接到不同数据库的一小段软件。

    从本质上讲,一个JDBC driver可以做三件事情:

    • 与数据源建立连接;
    • 将查询和更新语句发送到数据源;
    • 处理结果。

    JDBC驱动程序共分四种类型:

    1. JDBC-ODBC Bridge Driver
    2. JDBC-Native API
    3. JDBC-Net pure Java
    4. 100% Pure Java

    JDBC Architecture

    JDBC API支持用于数据库访问的两层和三层处理模型,但总的来说,JDBC架构由两层组成:

    • JDBC API: 这个提供了Application-to-JDBC Manager的连接。
    • JDBC Driver API: 这个支持JDBC Manager-to-Driver的连接。

    以下是体系结构图,其中显示了JDBC Driver Manager相对于JDBC DriverJava Application的位置。

    the architectural diagram

    Common JDBC Components

    • DriverManager
    • Driver
    • Connection
    • Statement
    • ResultSet
    • SQLException

    【参考资料】

    1. JDBC: An introduction
    2. JDBC - Driver Types
    展开全文
  • com.mysql.jdbc.Driver 是 mysql-connector-java 5中的, com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的1,JDBC连接Mysql5 ...url=jdbc:mysql://localho

    com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,
    com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的

    下载地址:https://dev.mysql.com/downloads/connector/j/5.1.html

    在这里插入图片描述

    仓库地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java

    在这里插入图片描述

    mysql-connector-java 5

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.49</version>
    </dependency>
    

    1、JDBC连接Mysql5 com.mysql.jdbc.Driver:

    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
    username=root
    password=
    

    2、JDBC连接Mysql6 com.mysql.cj.jdbc.Driver, 需要指定时区serverTimezone:

    driverClassName=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
    username=root
    password=
    

    在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong,例如:

    driverClassName=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
    username=root
    password=
    

    备注:

    I、如果mysql-connector-java用的6.0以上的,如下:

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.6</version>
    </dependency>
    
    

    但是你的driver用的还是com.mysql.jdbc.Driver,就会报错:

    Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The new 
    driver class is 'com.mysql.cj.jdbc.Driver'. 
    The driver is automatically registered via the SPI 
    and manual loading of the driver class is generally unnecessary.
    

    此时需要把com.mysql.jdbc.Driver 改为com.mysql.cj.jdbc.Driver

    II、还有一个警告:

    WARN: Establishing SSL connection without server’s identity verification is not recommended. 
    According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection 
    must be established by default if explicit option isn’t set. 
    For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. 
    You need either to explicitly disable SSL by setting useSSL=false, 
    or set useSSL=true and provide truststore for server certificate verification.
    

    不推荐不使用服务器身份验证来建立SSL连接。
    如果未明确设置,MySQL 5.5.45+, 5.6.26+ and 5.7.6+版本默认要求建立SSL连接。
    为了符合当前不使用SSL连接的应用程序,verifyServerCertificate属性设置为’false’。
    如果你不需要使用SSL连接,你需要通过设置useSSL=false来显式禁用SSL连接。
    如果你需要用SSL连接,就要为服务器证书验证提供信任库,并设置useSSL=true

    SSL – Secure Sockets Layer(安全套接层)

    展开全文
  • Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 1,548,635,756,564 milliseconds ago. ...

    具体错误信息

    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    The last packet successfully received from the server was 1,548,635,756,564 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.


    1、一般是由于连接的Ip地址、用户名、密码有误

     

    2、 特殊的情况

    2.1、在JDBC URL中使用autoReconnect属性,实际测试时使用了autoReconnect=true&failOverReadOnly=false,网上所说的只对mysql 4之前的版本有效。

    2.2、修改MySQL的参数,wait_timeout最大为31536000即1年,在my.cnf中加入:

    [mysqld]

    wait_timeout=31536000

    interactive_timeout=31536000

    重启生效,需要同时修改这两个参数


    两种解决异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法

    原因:由于数据库回收了连接,而系统的缓冲池不知道,继续使用被回收的连接所致的。

               第一种解决办法

             将mysql回收空闲连接的时间变长,mysql默认是8小时,可以在mysql目录下的my.ini中增加下面配置,将时间改为1天。

              [mysqld]

              wait_timeout=86400


               第二种解决办法

              可以通过配置,让缓冲池去测试连接是否被回收,如果被回收,则不继续使用,以dbcp为例

    知识点:

              #SQL查询,用来验证从连接池取出的连接
              dbcp.validationQuery=SELECT 1
              #指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除
              dbcp.testWhileIdle=true
              #在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位,一般比minEvictableIdleTimeMillis小
              dbcp.timeBetweenEvictionRunsMillis=300000
              #在每次空闲连接回收器线程(如果有)运行时检查的连接数量,最好和maxActive一致
             dbcp.numTestsPerEvictionRun=50
              #连接池中连接,在时间段内一直空闲,被逐出连接池的时间(1000*60*60),以毫秒为单位
              dbcp.minEvictableIdleTimeMillis=3600000
    -------------------------------------------------------------------------------------
    <!-- dataSourceNew start-->

        <bean id="dataSourceNew" class="org.apache.commons.dbcp.BasicDataSource">
        <!-- 设置JDBC驱动名称 -->
        <property name="driverClassName" value="${jdbc.driver}" />
        <!-- 设置JDBC连接URL -->
        <property name="url" value="${jdbc.url.new}" />
        <!-- 设置数据库用户名 -->
        <property name="username" value="${jdbc.username.new}" />
        <!-- 设置数据库密码 -->
        <property name="password" value="${jdbc.password.new}" />
        <!-- 设置连接池初始值 -->
        <property name="initialSize" value="5" />
        <!-- 设置连接池最大值 -->
        <property name="maxActive" value="8" />
        <!-- 设置连接池最小空闲值 -->
        <property name="minIdle" value="5" />
        <!-- 设置连接池最大空闲值 -->
        <property name="maxIdle" value="5" />

            <property name="validationQuery">

            <value>SELECT 1</value>

            </property>

            <property name="testWhileIdle">

            <value>true</value>

            </property>

            <property name="timeBetweenEvictionRunsMillis">

            <value>300000</value>

            </property>

            <property name="numTestsPerEvictionRun">

            <value>8</value>

            </property>

            <property name="minEvictableIdleTimeMillis">

            <value>3600000</value>

            </property>


    </bean>
    -------------------------------------------------------------------------------------

    您的支持是我分享经验的动力

    展开全文
  • 在使用MySQL驱动进行JDBC时候出现了以下异常 Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. at sun....
  • JDBC视频教程从入门到精通

    万人学习 2016-12-24 15:10:54
    本套视频教程中讲解了Java语言如何连接数据库,对数据库中...Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等,是学习JDBC好的Java教程之一。
  • 1、Sharding-JDBC----水平分库----使用案例 2、Sharding-JDBC----水平分表----使用案例 3、Sharding-JDBC----垂直分库----使用案例 4、Sharding-JDBC----垂直分表----使用案例 垂直分表需要将表的列进行拆分。1张表...
  • JDBC连接ORACLE的三种URL格式

    万次阅读 多人点赞 2016-09-05 19:17:51
    使用jdbc连接oracle时url有三种格式格式一: Oracle JDBC Thin using an SID: jdbc:oracle:thin:@host:port:SID Example: jdbc:oracle:thin:@localhost:1521:orcl 这种格式是最简单也是用得最多的 你的oracle的...
  • JDBC连接impala Java连接Hive JDBC连接Hive

    万次阅读 2018-10-09 20:01:27
    JDBC连接impala Java连接Hive JDBC连接Hive 大家都知道impala是用hive的数据源,但速度要比hive快的多,在秒级即可完成任务查询 package cn.com.tengen.hive; import java.sql.SQLException; import java.sql....
  • 声明:使用JDK9、MYSQL8、idea  1.报错信息是这样的; 处理:提示信息表明数据库驱动...所以,按照提示更改jdbc.properties配置 .com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver ...
  • JDBC的 驱动包 ojdbc14.jar 程序文件

    万次下载 热门讨论 2007-07-09 23:02:52
    JDBC的 驱动包 ojdbc14.jar 程序文件 ----oracle jdbc driver for jdk1.5
  • Java学习指南(8) MySQL数据库与JDBC框架

    万人学习 2019-08-20 08:00:10
    『Java学习指南系列』的第8篇教程 ,介绍MySQL数据库的安装使用,常见SQL语句,以及使用JDBC进行数据库开发的技术。 二、主要内容  * MySQL的安装和使用 * 常用SQL语句,增删改查操作 * 高级SQL...
  • JDBC 8.0 和 JDBC 5.0 区别

    万次阅读 2019-03-04 11:10:46
    8.0要写的版本 package test; import java.sql.*; public class SqlHelper { ... private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver"; //数据库连接地址 private static final ...
  • private static final String URL="jdbc:sqlserver://localhost;integratedSecurity=true;Database=master"; static{ try { Class.forName(DRIVER); System.out.println("获取驱动成功"); } catch...
  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'inert ...
  • Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '...
  • Sharding-JDBC分库分表从入门到精通

    千人学习 2019-09-26 13:44:29
    本课程不仅讲解多种有效的分库分表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三...
  • JDBC进化史--从JDBC1.0到JDBC4.2

    千次阅读 2015-08-05 10:33:39
    JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口)。它由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计...
  • jdbc无法执行删除操作

    2016-07-31 12:43:30
    String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=us"; con=DriverManager.getConnection(url,"sa","123456"); //编写SQL语句 String sql="delete name from st where name=?"; ...
  • jdbc.properties文件: ``` jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@192.168.1.106:1521:orcl jdbc.username=root jdbc.password=root jdbc.maxActive=50 ``` ...
  • 使用JDBC的方法连接不上MySQL,想自己做个练习,然后就出现了一下的错误,希望各位哥哥姐姐帮忙看下!谢谢 Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet =...
  • ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class ...
  • nested exception is org.hibernate.TransactionException: JDBC commit failed Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. ...
  • JDBC连接hive连接超时

    2015-11-12 03:09:31
    hiveserver2启动了,然后日志也正常,但是用kettle连接或者自己的java代码用jdbc连接都是报错,报错日志如下: java.sql.SQLException: Could not open connection to jdbc:hive2://192.168.162.129:10000/hivedb: ...
  • ERROR - Cannot load JDBC driver class 'oracle.jdbc.OracleDriver' 2013-10-8 22:36:28 org.apache.catalina.core.StandardContext start 严重: Error filterStart 2013-10-8 22:36:28 org.apache.catalina....
  • Exception in thread "pool-8-thread-1" Exception in thread "RECHARGE THREAD" Exception in thread "Tomcat JDBC Pool Cleaner[2106664795:1452233440248]" java.lang.OutOfMemoryError: GC overhead limit ...
  • 使用JDBC的方法连接不上MySQL,我的网络是校园网,登陆后IP会变化,不知道这个对连接有没有什么影响,用的是mysql 5.6 以前用JDBC连接上过的,但是现在就不行了,不清楚原因,也在网上找过,但是找不到解决的办法,...
  • 在学习AndroidAndroid入门案例(二)——JDBC连接MySql数据库使用jdbc方式连接本地数据库时报错: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent ...

空空如也

1 2 3 4 5 ... 20
收藏数 210,508
精华内容 84,203
关键字:

jdbc