数据库驱动程序和数据库方言之间的区别

Posted

技术标签:

【中文标题】数据库驱动程序和数据库方言之间的区别【英文标题】:Difference between database drivers and database dialects 【发布时间】:2011-01-06 07:43:05 【问题描述】:

数据库驱动程序和数据库方言有什么区别?

【问题讨论】:

您的问题含糊不清。您想要所有数据库的所有版本之间的所有差异的列表吗?或者你想知道司机和方言的区别吗? 司机和方言的区别 【参考方案1】:

这个问题没有歧义,我认为应该正确回答。

我们经常使用 Dialect 和 Drivers 将某个应用程序与某个数据库管理系统连接起来。

例如:在 grails/java 中

我们定义了一个 Dialect 属性来连接到 mysql,它具有 types 之一

MySQL5Dialect, MySQLInnoDBDialect, MySQLMyISAMDialect

方言是一个英语单词,意思是一种语言的变体。例如,英语有多种方言。例如,英式英语和美式英语。

在数据库的上下文中,人们谈论 SQL 的方言。 SQL 和英语一样是主要语言。然后是具有数据库特定语法的方言。例如,Oracle 有 rownum 关键字。Refe

而且,数据库的方言只是一个术语,它定义了访问该数据库时可用的 SQL 语言的特定功能。

Example of usage in application side

dataSource 
    pooled = true
    jmxExport = true
    driverClassName = "com.mysql.jdbc.Driver"
    dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
    username = "root"
    password = "root"

注意。方言是连接数据库的必备条件。

另一方面,数据库驱动程序是安装在工作站或服务器上的程序,允许该系统上的程序与 DBMS 交互。[Refer]

在 java 中,我们有一些称为 JDBC/ODBC 驱动程序规范的东西来连接到关系数据库。

驱动程序类似于为处理实际数据库和消费应用程序(Mysql 和 java 应用程序)之间的通信而编写的文件或类文件。

MySQL 提供标准的数据库驱动程序连接,以便将 MySQL 与与行业标准 ODBC 和 JDBC 兼容的应用程序和工具一起使用。获得驱动程序文件后,将其放在 lib 文件夹中,然后您需要像这样调用或关联它。即您需要指定 URL ,DATABASENAME ,PORT ,PASSWORD ..才能连接到数据库。

dataSource 

     //url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT
              =10000;DB_CLOSE_ON_EXIT=FALSE"
      databasename = "libdoc"
      url = "jdbc:mysql://localhost:3306/"+databasename
   

Alloha,学习日快乐!

【讨论】:

【参考方案2】:

数据库驱动程序是实现用于连接数据库的协议(ODBC、JDBC)的程序。它是一个适配器,将通用接口连接到特定供应商的实现,就像打印机驱动程序等一样。

数据库方言是平台无关软件(JPA、Hibernate 等)的配置设置,允许此类软件将其通用 SQL 语句转换为供应商特定的 DDL、DML。

似乎“数据库方言”可能被其他类型的数据库程序用来表示与我刚刚写的内容略有不同但大致相似的东西。也就是说,“数据库驱动程序”是一个公认的行业术语,具有单一的具体含义,而“数据库方言”则没有类似的认识,因此在不同的上下文中指代不同的概念。

【讨论】:

【参考方案3】:

原问题:

数据库驱动程序和数据库方言有什么区别?

这个问题模棱两可;这是我的看法。

driver 是一个用于访问数据库的软件。

dialect 是用于访问数据库的查询语言(即协议)的变体。根据数据库软件的不同,可能支持多个不同的dialects

即并非所有sql 都是平等的;-)

【讨论】:

以上是关于数据库驱动程序和数据库方言之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate不同数据库的连接及SQL方言

程序进程线程之间的区别

即使驱动程序类名和休眠方言的值错误,Spring Hibernate 集成示例也会执行

比较 hsqldb 和 mysql

MSSQL 2014 的错误休眠方言

DECIMAL和NUMERIC之间的区别