㈠ 数据库接口的数据库接口技术
Microsoft推出的ODBC(Open Database Connectivity)技术 为异质数据库的访问提供了统一的接口。ODBC基于SQL(Structured Query Language),并把它作为访问数据库的标准。这个接口提供了最大限度的相互可操作性:一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。一个软件开发者开发的客户/服务器应用程序不会被束定于某个特定的数据库之上。ODBC可以为不同的数据库提供相应的驱动程序。 什么是ODBC ?
ODBC基于SQL(Structured Query Language),并把它作为访问数据库的标准。这个接口提供了最大限度的相互可操作性:一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。
与ODBC有关的名词
ODBC驱动程序:是一个动态链接库(DLL),用以将特定的开放式数据库连接的数据源和另一个应用程序(客户端)相连接。
ODBC数据源:作为数据源使用的数据库或数据库服务器。ODBC数据源通过它们的数据源名称来引用,或者通过具体引用ODBC驱动程序和服务器名称来引用。可以在Windows的控制面板中使用ODBC管理程序或rdoRegisterDataSource(一个ODBC API)方法来注册命名的数据源。
ODBC驱动程序管理器:提供从主机语言到特定后端数据源驱动程序的接口。
ODBC API:数据库厂商为程序设计者提供的直接访问数据库的一组函数。注意:这里要指出的是,虽然ODBC API提供了很多很方便而且强大的功能。但是通常来说ODBC API都比较难学,而且使用很容易出错。虽然允许用ODBC API来操作ODBC句柄,但还是要小心,如果不正确地使用ODBC API,可能会导致不可预知的错误。例如,假如使用ODBC API代码来关闭连接或释放这些ODBC句柄中的任何一个,那么RemoteData控件或RDO的行为将是不可预知的。保存ODBC句柄以供备用也是没有意义的,因为它们是可变的。 什么是JDBC ?
JDBC(java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
简单地说,JDBC 可做三件事:、发送 操作数据库的语句并处理结果。下列代码段给出了以上三步的基本示例:
Connection con = DriverManager.getConnection(jdbc:odbc:wombat,login,
password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Table1);
while (rs.next()) {
int x = rs.getInt(a);
String s = rs.getString(b);
float f = rs.getFloat(c);
}
上述代码对基于JDBC的数据库访问做了经典的总结。
这里简单介绍下ODBC和JDBC,如果想详细了解的同学可以单击链接去相应词条。
㈡ sql连接数据库语句
.代表你连接的数据库所是在本机上的,也可以写成127.0.0.1\\sqlexpress
如果你写成别的代表你所连接的数据库在别专的电属脑上,即远程连接
例如:server=某一电脑的 ip(这个时候就只要写server=ip,也可以写成server=ip\\sqlexpress)
希望对你有所帮助
㈢ sql 和 ADO是什么关系
数据库是一个存放数据的软件。数据库管理系统是用来管理数据的。
SQL是数据库操作语言的一种,是用来操作数据库中的数据以及管理数据库的。而现在常用的主要是结构化查询语言,也就是SQL,各个厂家的数据库系统有不同的实现以及扩展。
ADO这些东西是为了让程序访问数据库更方便而做的一层封装,或API。ADO.NET,JDBC是分别的不同的技术实现。
ADO是一个用于存取数据源的COM组件,提供了编程语言和统一数据访问方式OLEDB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。
访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。
SQL它是一个标准的数据库查询语言,用于操纵数据库;而ADO则是数据联接方式,就是通过什么方式或者说通过什么数据库组件来让你联接到数据库;
换句话说,ADO是让联接到数桥桥据库(建立通路),而SQL是在这个通路的基础上进行对数据的操作,SQL定义了如何对数据库进行操作(增减改查),ADO为这个操作提供了可能(Execute方法)。
其实ODBC本身也提供了对SQL语言的支持,用户也可以直接将SQL语句送给ODBC。
(3)数据库连接词是什么扩展阅读:
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的冲消态结构化查询语言作为数据输入与管理的接口。
结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
SQL的核心部分相当于关系代数,但又具有关系代数所没有散源的许多特点,如聚集、数据库更新等。它是一个综合的、通用的、功能极强的关系数据库语言。
㈣ jdbc是什么, 和mysql什么关系,需要下载什么吗
JDBC是连接数据库。这个数据库可以指派不同的数据库。写好的JDBC代码可以实现页面传值。
而MySql是数据库软件之一。
㈤ vba 如何引用oracle 10g 的控件 oracle data control 请详细些说明下,谢了!
VBA连接oracle数据库
小 'システム共通変数
Public ORA_SE As Object 'Oracleのセッションオブジェクト
Public ORA_DB As Object 'Oracleの接続オブジェクト
'******************************************************************************
' プロシージャ名 : Ora_Connect
'宏明 概要 : Oracle接続
' パラメータ : なし
' 说明 :Oracleへの接枝首続を行う
'******************************************************************************
'Public Sub Ora_Connect()
Public Function Ora_Connect()
Dim rt As Integer
On Error GoTo err
Set ORA_SE = CreateObject("OracleInProcServer.XOraSession")
'Set ORA_DB = ORA_SE.OpenDatabase("数据库连接词", "用户名/密码", 0&)
Set ORA_DB = ORA_SE.OpenDatabase("combcm", "combcm/combcm", 0&)
Exit Function
err:
End Function
'******************************************************************************
' プロシージャ名 : Ora_DisConnect
' 概要 : Oracle切断
' パラ蔽搭告メータ : なし
' 说明 : Oracleの切断を行う
'******************************************************************************
'Public Sub Ora_DisConnect()
Public Function Ora_DisConnect()
Set ORA_SE = Nothing
Set ORA_DB = Nothing
End Function
Public Function getData()
'该当なし
If OraDynaset.EOF = True Then
Set OraDynaset = Nothing
Exit Function
Else
'2004/03/06 add rec_cntを2して2行目から书き出す
'rec_cnt = 2
'Do While Not OraDynaset.EOF
'For row_cnt = 0 To OraDynaset.Fields.Count - 1
' Cells(rec_cnt, row_cnt + 1).Value = OraDynaset(row_cnt).Value
'Next row_cnt
'2004/11/26 クリップボードを介した方法でスピードアップ対応。
'从数据库中取出数据
OraDynaset.CopyToClipboard
Cells(2, 1).Select
ActiveSheet.Paste
rec_cnt = OraDynaset.RecordCount
'OraDynaset.DbMoveNext
'rec_cnt = rec_cnt + 1
'Loop
End If
end function
㈥ 什么是ODBC
1、ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分。
2、ODBC技术。ODBC的基本思想是为用户提供简单、标准、透明的数据库连接的公共编程接口,开发厂商根据ODBC的标准去实现底层的驱动程序,这个驱动对用户是透明的,并允许根据不同的DBMS采用不同的技术加以优化实现,这就利于不断吸收新的技术而趋完善。
3、一种动态链接库 (DLL),支持 ODBC 的应用程序(如 Excel)可以用它来访问 ODBC 数据源。每个 ODBC 驱动程序针对一个数据库管理系统 (DBMS),如 SQL Server、Access 等等。
4、MyODBC是提供标准ODBC界面存取的程序,用VB、VC、BCB、Access等等透过ODBC直接存取数据库,减少Web Server更新MySQL数据库。
5、unixodbc是一个来连接数据库的组件。该版本主要是支持 64 位的 SQLLEN,修复了一些bug;另外驱动部分和图形化设置工具分开为两个独立的项目。它能让你在Unix/Linux系统下使用ODBC。
㈦ Java数据库连接的建立联接
建议链接的五大步骤:
1加载(注册)数据库
2 建立链接
3 执行SQL语句
4 处理结果集
5 关闭数据库
教程:JDBC 入门 作者:Maydene Fisher 翻译:comer
你需要做的第一事情是你与想要使用的 DBMS 建立一个连接。这包含 2 个步骤:装载驱动程序并建立连接。
装载驱动程序
装载驱动程序只需要非常简单的一行代码。例如,你想要使用 JDBC-ODBC 桥驱动程序,可以用下列代码装载它:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
你的驱动程序文档将告诉你应该使用的类名。例如, 如果类名是 jdbc.DriverXYZ ,你将用代码以下的代码装载驱晌虚动程序:
Class.forName("jdbc.DriverXYZ");
你不需要创建一个驱动程序类的实例并且用 DriverManager 登记它,因为调用 Class.forName 将自动将加载驱动程序类。如果你曾自己创建实例,你将创建一个不必要的副本,但它不会带来什么坏处。
加载 Driver 类后,它们即可用来与数据库建立连接。
建立连接
第二步就是用适当的驱动激谨团程序类与 DBMS 建立一个连接。下列代码是一般的做法:
Connection con = DriverManager.getConnection(url,"myLogin","myPassword");
这个步骤也非常简单,最难的是怎么提供 url。如果你正在使用 JDBC-ODBC 桥, JDBC URL 将以 jdbc:odbc 开始:余下 URL 通常是你的数据源名字或数据库系统。因此,假设你正在使用 ODBC 存取一个叫 "Fred" 的 ODBC 数据源,你的 JDBC URL 是 jdbc:odbc:Fred。把 "myLogin" 及 "myPassword" 替换为你登陆 DBMS 的用户名及口令。如果你登陆数据库系统的用户名为 "Fernanda" 口令为 "J8",只需下面的 2 行代码就可以建立一个连接:
String url = "jdbc:odbc:Fred";
Connection con = DriverManager.getConnection(url,"Fernanda","J8");
如果你使用的是第三方开发了的 JDBC驱动程序,文档将告诉你该使用什么 subprotocol, 就是在 JDBC URL 中放在 jdbc 后面的部分。例如,如果驱动程序开发者注册了 acme 作为 subprotocol, JDBC URL 的第一和第二部分将是 jdbc:acme。驱动程序文档也会告诉你余下 JDBC URL 的格式。JDBC URL 最后一部分提供了定位数据库的信息。
如果你装载的驱动程序识别了提供给 DriverManager.getConnection 的 JDBC URL ,那个驱动程序将根据 JDBC URL 建立一个到指定 DBMS 的连接。正如名称所示,DriverManager 类在幕后为你管理建立连接的所有细节。除非你是正在写驱动程序,你可能无需使用此类的其它任何方法,一般程序员需要在此类中直接使用的唯一方法是 DriverManager.getConnection。
DriverManager.getConnection 方法返回一个打开的连接,你可以使用此连接创建 JDBC statements 并发送 SQL 语句到数据库。在前面的例子里,con 对象是一个打开的连接,并且我们要在以后的例子里使用它。
设置表
创建表
首先,我们在我们的示例数据库创建其中一张表 COFFEES,包含在咖啡店所卖咖啡的必要的信息,包括咖啡名字,他们的价格,本星期卖了多少磅及迄今为止卖的数目。
另外,我们应该指出的的是 SQL 语句的格式。在 CREATE TABLE 语句中,关键字采用大写字符,并且每个项目都另起一行。SQL 并没有此要求;明橘仅仅是为了更容易阅读。SQL 标准是不区分关键词的大小写的,
然而,引号里的内容是区分大小写的:在名字"Washington" 里 "W" 必须被大写,并且余下的字符必须是小写的。
对于标识,不同的 DBMS 有不同的要求,例如,某些 DBMSs 要求那些列名及表名必须跟创建时的一样,有些则没有此要求。为安全起见,我们全部使用大写标识如 COFFEES、SUPPLIERS,因为我们是那样定义他们的。
到止我们写了创建 COFFEES 表的 SQL 语句,我们在它外面加上引号(使它成为字符串),并且字符串赋值给变量 createTableCoffees,在以后的 JDBC 代码中我们可以使用此变量。正如看到的,DBMS 并不在意分行,但对 Java 语言来,String 对象分行是通不过编译的。因而,我们可以用加号 (+) 把每一行的串连接。
String createTableCoffees = "CREATE TABLE COFFEES " +
"(COF_NAME VARCHAR(32),SUP_ID INTEGER,PRICE FLOAT," +
"SALES INTEGER,TOTAL INTEGER)";
我们在 CREATE TABLE 语句中使用的数据类型是通用的 SQL 类型(也称 JDBC 类型)它们在类 java.sql.Types 中定义。DBMSs 通常使用这些标准的类型,因此,当你要尝试一些 JDBC 应用程序时,你可以直接使用 CreateCoffees.java 应用程序,它使用了 CREATE TABLE 语句。如果你的 DBMS 使用了它的自己的本地的类型名字,我们为你供应其它的应用程序,我们将在后面详细解释。
在运用任何应用程序前,当然,我们将让你了解 JDBC 的基础。
创建 JDBC Statements 对象
Statement 对象用于把 SQL 语句发送到 DBMS。你只须简单地创建一个 Statement 对象并且然后执行它,使用适当的方法执行你发送的 SQL 语句。对 SELECT 语句来说,可以使用 executeQuery。要创建或修改表的语句,使用的方法是 executeUpdate。
需要一个活跃的连接的来创建 Statement 对象的实例。在下面的例子中,我们使用我们的 Connection 对象 con 创建 Statement 对象 stmt:
Statement stmt = con.createStatement();
到此 stmt 已经存在了,但它还没有把 SQL 语句传递到 DBMS。我们需要提供 SQL 语句作为参数提供给我们使用的 Statement 的方法。例如,在下面的代码段里,我们使用上面例子中的 SQL 语句作为 executeUpdate 的参数:
stmt.executeUpdate("CREATE TABLE COFFEES " +
"(COF_NAME VARCHAR(32),SUP_ID INTEGER,PRICE FLOAT," +
"SALES INTEGER,TOTAL INTEGER)");
因为我们已经把 SQL 语句赋给了 createTableCoffees 变量,我们可以如下方式书写代码:
stmt.executeUpdate(createTableCoffees);
执行语句
我们使用 executeUpdate 方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。
被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。马上你将看到如何使用这个方法。
在表中输入数据
我们已经显示了如何通过指定列名、数据类型来创建表 COFFEES,但是这仅仅建立表的结构。表还没有任何数据。我们将次输入一行数据到表中,提供每列的信息,注意插入的数据显示顺序跟表创建时候是一样的,既缺省顺序。
下列代码插入一个行数据,COF_NAME 的值为 Colombian,SUP_ID 为 101,PRICE 为 7.99,SALES 0,TOTAL 0。就象创建 COFFEES 表一样,我们创建一 Statement 对象,并执行 executeUpdate 方法。
因为 SQL 语句一行显示不下,因此我们把它分为两行,并用加号 (+) 相连。特别要注意的是,在 COFFEES 和 VALUES 之间要有空格。这个空格必须在引号之内并且要在 COFFEES 跟 VALUES 之间;没有这个空格,SQL 语句将被错误地被读作为 "INSERT INTO COFFEESVALUES ...",并且 DBMS 将寻找表 COFFEESVALUES。还要注意的是在 coffee name 上我们使用了单引号。
Statement stmt = con.createStatement();
stmt.executeUpdate(
"INSERT INTO COFFEES " +
"VALUES ('Colombian',101,7.99,0,0)");
下面的代码把第二行插入到表 COFFEES 中。我们可以在使用 Statement 对象而无须为每次执行创建一个新的。
stmt.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('French_Roast',49,8.99,0,0)");
剩下行的数据如下:
stmt.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('Espresso',150,9.99,0,0)");
stmt.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('Colombian_Decaf',101,8.99,0,0)");
stmt.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('French_Roast_Decaf',49,9.99,0,0)");
从表中取得数据
既然表 COFFEES 中已经有数据了,我们就可以写一个 SELECT 语句来取得这些值。下面的 SQL 语句中星号 (*) 表示选择所有的列。因为没有用 WHERE 子句来限制所选的行,因此下面的 SQL 语句选择的是整个表。
SELECT * FROM COFFEES
结果是整个表的数据,如下:
COF_NAME SUP_ID PRICE SALES TOTAL
--------------- ------ ----- ----- -----
Colombian 101 7.99 0 0
French_Roast 49 8.99 0 0
Espresso 150 9.99 0 0
Colombian_Decaf 101 8.99 0 0
French_Roast_Decaf 49 9.99 0 0
如果你直接在数据库系统里输入 SQL 查询语句,你将在你的终端上看到如上的结果。当我们通过一个 Java 应用程序存取一个数据库时,正如我们马上要做的一样,我们需要检索结果以便我们能使用他们。你将在下一节看到如何实现。
这是 SELECT 语句的另一个例子,这将得到咖啡及其各自每磅单价的列表。
SELECT COF_NAME,PRICE FROM COFFEES
查询的结果集将具有如下形式:
COF_NAME PRICE
-------- ---------- -----
Colombian 7.99
French_Roast 8.99
Espresso 9.99
Colombian_Decaf 8.99
French_Roast_Decaf 9.99
上面 SELECT 语句取得了所有咖啡的名字及价格。而下面的 SELECT 语句限制那些每磅价格低于 $9.00 的咖啡才被选择。
SELECT COF_NAME,PRICE
FROM COFFEES
WHERE PRICE < 9.00
结果集将具有如下形式:
COF_NAME PRICE
-------- ------- -----
Colombian 7.99
French_Roast 8.99
Colombian Decaf 8.99
JDBC 入门 -- 开始
你需要做的第一事情是你要正确的安装。这包含下列几个步骤:
在你的计算机上安装 Java 和 JDBC
Java 数据库连接 (JDBC) 是一个标准 SQL(Structured Query Language,结构化查询语言)数据库访问接口,可以为多种关系数据库提供统一访问。JDBC(Java DataBaseConnection,Java 数据库连接) 也提供一种基准,据此可以构建更高级的工具和接口。 JDK(Java Development Kit,Java 开发工具包)软件捆绑包括 JDBC 和 JDBC-ODBC(Open DataBase Connection,开放式数据库连接)桥。这些包也可独立得到,以跟 JDK 1.0 一起使用。应该注意的是,本文的示例使用了 JDBC 2.0 接口,需要 JDK 2.0 来运行,不能在 JDK 1.1 下运行。
你的驱动程序应该有安装方法。为特定的 DBMSs 写的 JDBC 驱动程序安装时只要拷贝到你的计算机上就可以了。并不需要特殊的配置。
如果你下载的是 Solaris 或 Windows JDK1.1 版本,桥作为包 sun.jdbc.odbc 与 JDK 一起自动安装。有关安装和配置 ODBC 的信息,请咨询 ODBC 驱动程序厂商。桥无须特殊配置。有关客户机安装和配置信息,请咨询数据库厂商。
如果需要,安装数据库系统
如果你不能确认是否安装了数据库系统,你需要按照供应商的要求安装数据库。大多数用户都已经安装了数据库,可继续使用他们安装好的数据库。
配置数据库
我们假设数据库 COFFEEBREAK 已经存在。(创建一个数据库并不困难,但需要一定的权限并通常是由数据库管理员来做)你还需要在此数据库里创建本教程作为例子使用的表。我们有意限制表的大小跟及数目,以便于管理。
假设我们的数据库是在一个咖啡馆里使用, 咖啡豆按磅卖,而咖啡则以杯为单位。为了简单起见,还假定经营者只需要 2 张表,分别存放不同种类的咖啡及咖啡供应商的有关信息。
首先我们演示怎么打开一个 DBMS 连接, 及 JDBC 是怎么发送 SQL 语句到你的 DBMS。通过这些代码,我们将表明使用 JDBC 传递 SQL 语句到你的 DBMS 并处理返回的结果是非常简单的。
所有的代码在主要的几个 DBMS 产品做了测试。然而,如果你使用 JDBC-ODBC 桥来连接旧版本 ODBC 驱动程序时,可能会遇到一些兼容性问题。
㈧ 数据库——关系代数运算
关系代数是一门抽象的查询语言,它用对关系的运算来表达查询。
运算对象、运算符、运算结果是运算的三大要素。关系代数的运算对象是关系,运算结果也是关系。
设R和S是n元关系,而且两者各对应属性的数据类型也相同。R和S的并操作定义为:
条件:① 等目、同元,即他们的属性数目必须相同 ② 对任意i,r的第i个属性域和s的第i个属性域相同
如:Πname(instructor)∪Πname(student)
简单来说就是: R和S所有关系都组合在一起, 重复的就不派颤写
p是选择操作,p用的是逻辑连接词,如∧、∨、┐
注:执行选择时,选择条件必须是针对同一元组中的相应属性值代入进行比较
简单来说就是: 把符合元组的拿出来
a1,a2等是属性名,r是关系名。其结果为保留此k列的值,并删除重复的行
条件:①等目、同元,即他们的属性数目必须相同 ②对任意i,r的第i个属性域和s的第i个属性域相同(和并运算一样的条件)
简单来说就是:因为是R-S, 找R在S关系中没有的
假设R的属性和S的属性没有交集就如图一,如果R和S的属性有尘念败交集,那么必须重命名这些有交集的属性
返回表达式E的结果高漏,并赋给它名字X,同时将属性重命名为A1,A2....An
例一:找出贷款额大于1200的元组
例二:找出贷款大于1200的贷款号
例三:找出有贷款或有账户两者兼有的所有客户姓名
例四:找出至少有一个贷款及一个账户的客户姓名
例五:找出Perryridge分支机构有贷款的顾客姓名
这个查询运用了两个关系,这个时候就要运用笛卡尔积
为什么要做“σ borrow.loan-number = loan.loan-number”的判断?因为这里面的组合很多,而我们要去除掉没有意义的组合
查询二要比查询一更好一点,因为borrower x loan的数据有可能是很庞大的,降低了查询效率,而查询二先做了选择再进行笛卡尔积运算,数据量相较小一点。
例六:找出在Perryridge分支机构有贷款,但在其他分支机构没有账号的顾客姓名
例七:找出银行中最大的账户余额
㈨ odbc名词解释
开放数据库连接罩镇(Open Database Connectivity,ODBC)是为解决异构数据库哪埋间的数据共享而产生的,现已成为WOSA(The Windows Open System Architecture(Windows开放系统李闷蚂体系结构))的主要部分和基于Windows环境的一种数据库访问接口标准。