精华内容
下载资源
问答
  • Mysql数据库连接驱动

    千次下载 热门讨论 2009-12-31 09:01:00
    MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。 SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言一个网站检索产品信息及...
  • 而其他如mybatis hibernate等数据库框架就是对jdbc进一步封装,那jdbc又是怎样实现呢,我们为什么可以通过相同代码操作不同数据库呢?来看看当年sun公司大牛智慧^_^ 数据库种类很多,想统一使用,

    如果我们使用JAVA连接数据库的话,一般要经过以下几步:

    1.加载驱动

    2.取得连接

    3.取得Statement

    4.取得结果集或执行结果

    5.操作结果集

    而其他如mybatis hibernate等数据库框架就是对jdbc的进一步封装,那jdbc又是怎样实现的呢,我们为什么可以通过相同代码操作不同数据库呢?来看看当年sun公司大牛的智慧^_^


    数据库种类很多,要想统一使用,那就要有统一的规则,而不能让数据库各自为战.

    首先,java定义了一系列数据库相关的接口,如:Driver,Connection,Statement等,然后告诉这些数据库厂商,要想让java程序员使用你们的数据库,你们自己就按照我写的接口实现功能,要不我们牛逼的java程序员就不用你家数据库了!于是各数据库厂商在开发数据库的时候还配套了自己的数据库驱动包,这就是为什么我们下载数据库(如:mysql)后能在他的文件中找到驱动包(如:mysql-connector-java-版本-bin)的原因.


    接下来说一下相同代码操作不同数据库的过程:

    由于java定义了一系列接口,我们按照开头说的,要想操作数据库,首先取得一个Connection,我们有两个方法可以取得Connection,一个是调用Driver类,一个是调用DriverManager类,如:

    Connection connection=DriverManager.getConnection(conStr, "root", "root");

    不管哪种方法,都需要特定的数据库驱动类,否则报错,而这个数据库驱动类由java定义接口,由数据库厂商自己实现,如mysql中Driver的实现:

    public class Driver
      extends NonRegisteringDriver
      implements java.sql.Driver
    {
      public Driver()
        throws SQLException
      {}
      
      static
      {
        try
        {
          DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
          throw new RuntimeException("Can't register driver!");
        }
      }
    }
    

    通过代码我们看出,我们使用:

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

    将驱动加载进内存后,自动执行static静态代码块,将该驱动类注册,交给DriverManager管理,这是为什么DriverManager能取得数据库连接的原因,它不过是借助了Driver类(mysql的话Driver的大部分实现在NonRegisteringDriver中).

    NonRegisteringDriver类是这样定义的:

    public class NonRegisteringDriver implements Driver


    通过特定的Driver

    Connection connection=DriverManager.getConnection(conStr, "root", "root");

    拿到了特定的Connection

    Statement statement=connection.createStatement();

    父类引用指向子类对象,所以调用的是特定数据库ConnectioncreateStatement()实现方法.

    如此,下同,就完成了使用相同代码连接不同数据库的过程,而这里,java只是定义了一系列接口,具体实现需要不同数据库自己去完成.从而大大方便了程序员的数据库编程过程.


    如有错误欢迎大家指正微笑

    end

    展开全文
  • 《SQL数据库的基础》

    2019-04-03 22:06:44
    开发工具与关键技术: 作者:黄姗姗 年级:18级 撰写日期:2019年.3月.31日 一 ....复制数据到其他文件上,需要分离后才能复制。...因为Excel和SQL是不同的数据库导入,就需要安装一个驱动才可以...

    开发工具与关键技术:
    作者:黄姗姗
    年级:18级
    撰写日期:2019年.3月.31日

    一 .服务器名称:(local)。复制数据到其他文件上,需要分离后才能复制。

    二 .数据库的导入:
    首先新建一个数据库,再导入数据,选择数据源的是:你数据是在什么里面就是原来的数据,
    这个是Excel 表格中,确认的时候发生了错误是为什么呢?
    因为Excel和SQL是不同的数据库,要导入,就需要安装一个驱动才可以。
    在这里插入图片描述
    文件路径就是你要导入的数据,目标就是自己的数据库。
    三.数据库的导出:可以相互导出都没有问题的,也可以导到Excel表格。
    数据源和目标就是倒过来的相反的了,数据源选择的就是自己的数据库了。
    文件路径可以建一个空的表来装。
    选择导出全部数据的时候会出现问题:
    在这里插入图片描述
    首先去查看一下创建表格那里是什么原因
    其实它虽然是导出失败了,但还是导出一下数据了,没有导完是什么原因呢?
    是因为这些数据有关联的,有关系的,一次性导完会出现问题,
    一个个的导就不会发生错误。
    在这里插入图片描述
    四 .创建数据库文件会有两个文件,这两个文件有什么区别呢?
    在这里插入图片描述
    1.真正的数据是装在这个mdf文件里面的。
    2.而log 这个它是日志文件,什么是日志文件:
    专门来登记曾经对数据库的操作,什么时间打开的关闭的,删除了那些数据,就是备份.。
    五。数据类型的理解:
    数据类型:整数.小数型.二进制.逻辑.字符.文本和图形.日期和时间.货币……
    数据容器的类型,不同的数据信息存放在数据库中,都要设定不同的数据类,不同大小的数据容器。
    nchar跟 char 有什么区别:是汉字都用ncher.而数字,字母都用char.
    nvarchar:就是系统会自动分配多少。文本:text。 是否:bit。小数:numeric(1,2)。
    二进制:是不能直接复制的,必须要写代码程序传换成二进制,把它写进来。

    展开全文
  • 29、为什么用触发器?:因为它由服务器自动激活,可以进行更为复杂检查和操作,具有更精细和更强大数据控制能力 。 30、什么时候用触发器?:强制引用完整性时 31、触发器作用:(1) 触发器可以查询其它表...
  • 这样就可以程序运行期间生成不同的数据库驱动程序对象。省去了固定写死一个数据库驱动对象(通过new 构造函数的方法),造成每更换一个数据库,重新编译代码的问题。 2.ioc容器中生成对象时,也是根据xml配置信息...

    1.class.forName(mysql),这样更换数据库时,不需要更改程序代码,程序不需要重新编译就能运行。

    因为反射是动态编译的,程序运行期间生成指定类的对象,

    这样就可以程序运行期间生成不同的数据库驱动程序对象。省去了固定写死一个数据库驱动对象(通过new 构造函数的方法),造成每更换一个数据库,要重新编译代码的问题。

    2.ioc容器中生成对象时,也是根据xml配置信息中的类型,反射生成对象的。并把这些对象存储在hashmap中,供程序调用的

    3.hibernate/mybatis这种持久层框架中,进行数据持久化时,通过反射生成sql语句

     

    展开全文
  • 例如:数据库查询条件传入问题是所有ORM框架都不能回避一个问题,所以我经常在想——既然我们可以用向DAO传入一个Entity来实现插入操作,为什么就不能用同样方法来描述一个不以主键为条件update/select/...
  • 因为不同的数据库实现的方式不同所以我们得需要数据库开发商提供的数据库的驱动; 然后连接数据库; 然后进行数据库的操作; 因为数据库的资源有限,所以一定关闭数据库连接。 下载驱动jar包,放到D:盘,并将...
     
    

    因为不同的数据库实现的方式不同所以我们得需要数据库开发商提供的数据库的驱动;
    然后连接数据库;
    然后进行数据库的操作;
    因为数据库的资源有限,所以一定要关闭数据库连接。
    下载驱动jar包,放到D:盘,并将该目录加载到classpath中;
    通过Class.forName(包.类名称)加载驱动---反射机制;

    java连接数据库时为什么要加载数据库驱动?
     其实数据库驱动和别的驱动性质一样,数据库这个产品不是用java实现的,但是如果想
     被java所使用则必须让java能用,这是驱动就产生了,驱动就是启动一个过渡的作用;
     所以java想去连接数据库就必须加装该数据库的驱动--Class.forName(...);
     又因为数据库种类繁多不断更新,所以这样java只需提供个接口即可,不同的数据库生产商
     按照该结构的要求去实现、创建数据库驱动就行了;
     所以java就提供了一个DriverManager类来充当与驱动链接的接口;

    数据库驱动又是怎么跟DriverManager这个类联系到的呢?
     Class.forName(包.类名称)利用反射机制创建了一个Class对象,而该驱动程序有个静态代码块
     这样加载驱动时,jvm就在内存中为该静态代码块开辟了空间,而该静态代码块中有个
       public class Driver extends NonRegisteringDriver implements java.sql.Driver {
        // ~ Static fields/initializers
        // --------------------------------------------- //
        // Register ourselves with the DriverManager
        //   
        static {
           try {
                     java.sql.DriverManager.registerDriver(new Driver());
                 } catch (SQLException E) {
                     throw new RuntimeException("Can't register driver!");
                 }
         }
       // ~ Constructors
        // -----------------------------------------------------------   
       /** *//**//**
         * Construct a new driver and register it with DriverManager
         *
         * @throws SQLException
         *             if a database error occurs.
         */
        public Driver() throws SQLException {
            // Required for Class.forName().newInstance()   
        }
       } 这样该驱动就注册到了DriverManager这个类上了;
       
      
    java连接数据库就是为了取得与数据库的连接:
     DriverManager提供了一个方法可以得到与数据库的连接;


    MySQL数据库的连接地址格式:
    jdbc:mysql://ip地址:端口号/数据库名称

     

    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.SQLException;
    public class Demo{
     //定义数据库的驱动程序
     //下面的包.类名称要根据驱动jar中Driver.class来定,不同点jar不一样
     public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
     //定义数据库的连接地址:
     public static final String DBURL="jdbc:mysql://localhost:3306/lid";
     //定义数据库的用户名
     public static final String DBUSER="root";
     //定义数据库的密码
     public static final String DBPASSWORD="123";
     public static void main(String args[]){
      Connection conn=null;
      try{
       //加载数据库驱动
       Class.forName(DBDRIVER);//创建一个该驱动类的Class对象;
       }
      catch(ClassNotFoundException e){
       e.printStackTrace();
       }
      try{
       conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
       }
      catch(SQLException e){
       e.printStackTrace();
       }
      System.out.println(conn);//如果可以打印说明连接成功
      try{
       conn.close();
       }
      catch(SQLException e){
       e.printStackTrace();
       }
       
      }
     }


     

    展开全文
  • Redis的简介 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常...为什么要Redis做缓存? ...
  • 1、不同的数据库如果想实现JDBC的访问,则肯定要求提供有数据库的驱动程序包,首先来打开MySQL数据库连接驱动程序的类定义: public class Driver extends ...
  • 备份数据可以在不同的驱动器上、在独立的机器上、在独立的楼层上或在不同的建筑物里。不可能预测所有可能的灾难。火灾、水灾或甚至用户的恶作剧都可能是企业必须面对的问题。解决方案的设计应该包括公司希望防止最坏...
  • 您可以不同SQL驱动程序注册txdb,并将其使用不同的驱动程序名称。 在后台,只要打开txdb驱动程序,它就会尝试打开真实连接并开始事务。 调用close时,它将回滚事务,使准备好的测试数据库保持与以前相同的状态。 ...
  • JDBC是面向“与平台无关”设计的,所以在编程的时候不必关心自己使用...所以假如连接由三家公司开发的不同种类的数据库,就需要三个单独的驱动程序对象。 1、加载驱动  驱动程序对象会在装载时由“驱动程...
  • 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来...
  • 简单来说Redis就是一个数据库,不过与传统的数据库不同的是Redis的数据是存在内存中的,所以存写速度非常快,因此Redis被广泛应用于缓存方向。  另外,Redis也经常... 1、为什么要用Redis,为什么要用缓存? ...
  • 15.2.3 使用外部表加载不同的文件 622 15.2.4 多用户问题 623 15.2.5 外部表小结 624 15.3 平面文件卸载 624 15.4 数据泵卸载 631 15.5 小结 633 第16章 数据加密 634 16.1 加密类型 634 16.1.1 动态数据 ...
  • 但是文档中没有实战用例,没有告诉我们哪些可行或者哪些不可行,什么情况下可行或者什么情况下不可行,为什么可行或者为什么不可行,它只是“公事公办”为你呈上厚厚一摞文字,告诉你情况就是这样,你自己看着办吧...
  • 自定持久框架 mybatis 前言 JDBC操作数据库和Mybatis操作数据库,为什么使用Mybatis框架,而不去使用...1 首先第一步加载驱动,这个我们完全可以通过反射来解决,更换不同的数据库驱动; 2 创建连接,每一次操作数据库都
  • 先来看看为什么要做表格存储。就像10年前谷歌BigTable论文里面描述一样,新时代数据有一些明显特征: 数据量大、读写量大、增长速度很难预计。关于增长速度,比如答题,一天内访问量就可能上涨几十倍,不差钱...
  • JDBC概述

    2020-09-19 21:47:36
    2.为什么要使用JDBDC 2.1.1当我们没有jdbc的时候,我们连接各种不同的服务器的时候就要用不同服务器的驱动去连接对应的服务器,如下图 2.1.2当我们有了JDBC以后,我们只需要使用JDBC就能连接各种不同的服务器,让...
  • 三、数据库:redis(原文PDF获取详情见文字末尾) 3.1 redis的简介 Redis是一个非关系型数据库,但是与传统的数据库相比...为什么要用redis/为什么要用缓存 为什么用一个东西,肯定是以前的东西不好,所以出了这...
  • 蒋德钧 Redis 集训班

    2021-03-02 10:33:58
    redis 简介 简单来说 redis 就是一个数据库,不过与传统...为什么要用 redis /为什么要用缓存 主要从“高性能”和“高并发”这两点来看待这个问题。 高性能: 假如用户第一次访问数据库某些数据。这个过程会比较慢
  • Redis介绍及使用

    千次阅读 2020-11-30 20:51:39
    简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来...
  • Redis简介 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。...1.为什么要用redis?...
  • redis 简介 快看小说网简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来...为什么要用 redis...
  • 作为通用的项目模板,其中最可能按需而大变的就是数据层,因为不同的项目,使用的数据库、数据驱动技术,是很有可能不同的。项目A,MsSql+EF(就像我正在演示的),项目B,也用这套模板,但变成了MySql+ADO.NET,...
  • 动机-为什么要使用另一个库Mongo4J? mongo4j用法可在术语“。 在这种情况下,您很可能希望结合neo4j“关系导航”,同时仍在MongoDB中维护文档以快速访问并保存所有信息。 不幸是,这也带来了额外维护,以...
  • Redis一般理解

    2020-02-15 20:45:08
    一.redis简介 redis就是一个非关系型数据库,数据存在内存中,读写速度非常快 另外redis经常用来做分布式锁(redis为单进程单线程模式,采用队列模式将并发...为什么要用redis作为缓存 高性能:用户通过访问缓存...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 191
精华内容 76
关键字:

为什么不同的数据库要不同的驱动