26

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

4

3 回答 3

21

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

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

例如:在 grails/java 中

我们定义一个 Dialect 属性来连接到 mysql 为具有这种类型之一

MySQL5Dialect, MySQLInnoDBDialect, MySQLMyISAMDialect

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

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

而且,数据库的方言只是一个术语,它定义了访问该数据库时可用的 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 交互。[参考]

在 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,学习日快乐!

于 2014-04-16T13:38:11.863 回答
13

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

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

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

于 2010-01-18T11:01:17.013 回答
9

原始问题:

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

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

Adriver是用于访问数据库的软件。

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

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

于 2010-01-18T10:42:28.480 回答