在Oracle上構(gòu)建 .NET 應(yīng)用程序(1)
2024-08-29 13:44:19
供稿:網(wǎng)友
隨著 Microsoft 的 .NET 框架的逐漸流行,許多開發(fā)人員迫切想了解關(guān)于將 .NET 應(yīng)用程序與 Oracle 集成的最好的方式的信息 —— 不僅在基本的連通性方面,還包括與使用 Visual Studio.NET (VS.NET) 進(jìn)行有效的應(yīng)用程序開發(fā)的關(guān)系。 在本文中,我將說明構(gòu)建使用 Oracle 數(shù)據(jù)庫的 .NET 應(yīng)用程序所涉及到的基本但不可或缺的過程,包括:
如何添加工程引用,以在您的 .NET 工程中支持 Oracle 類;如何創(chuàng)建 Oracle 數(shù)據(jù)庫連接字符串;如何使用 Connection、Command 和 DataReader 對象。
您將有機(jī)會應(yīng)用您在三個上機(jī)操作實踐中學(xué)到的內(nèi)容,難度范圍從比較輕易到更復(fù)雜。
.NET Data PRovider
除了基本的 Oracle 客戶端連通性軟件,.NET 應(yīng)用程序還需要使用稱為 managed data provider(其中 "managed" 指的是代碼由 .NET 框架治理)的工具。 數(shù)據(jù)供給程序是 .NET 應(yīng)用程序代碼和 Oracle 客戶端連通性軟件之間的層。 在幾乎所有情況下,最優(yōu)的性能都是通過使用為特定數(shù)據(jù)庫平臺優(yōu)化了的供給程序而不是一般的 .NET OLE DB 數(shù)據(jù)供給程序?qū)崿F(xiàn)的。
Oracle、Microsoft 和第三方供給商都提供了針對 Oracle 產(chǎn)品進(jìn)行了優(yōu)化的數(shù)據(jù)供給程序。 Oracle 和 Microsoft 免費提供其 Oracle 數(shù)據(jù)供給程序。 (Microsoft 為 .NET 框架的 1.1 版提供的供給程序包含在該框架中,不需要單獨下載或安裝。) 一些第三方數(shù)據(jù)供給程序支持 Oracle 的較早的版本,或者不需要安裝 Oracle 客戶端軟件。 在本文中,我們假設(shè)使用 Oracle Data Provider for .NET (ODP.NET),并單獨提供下載。
當(dāng)安裝了 ODP.NET 和所有要求的 Oracle 客戶端連通性軟件時,就可以開始使用 Visual Studio.NET 進(jìn)行應(yīng)用程序開發(fā)了。 在開始開發(fā)前,請先確認(rèn)客戶端連通性。 假如您在 VS.NET 所在的計算機(jī)上使用 SQL*Plus 能夠與 Oracle 連接,那么證實您已經(jīng)正確地安裝和配置了 Oracle 客戶端軟件。
假如您剛接觸 Oracle,那么請參閱 Oracle Data Provider for .NET 開發(fā)人員指南 10g 版本 1 (10.1) 中的“與 Oracle 數(shù)據(jù)庫連接”部分,以了解 ODP.NET 的背景信息,或參閱 Oracle 數(shù)據(jù)庫治理員指南 10g 版本 1 (10.1),以了解關(guān)于治理 Oracle 數(shù)據(jù)庫的通用信息。 您還可以查閱“使用 ODP.NET 與 Oracle 數(shù)據(jù)庫連接”示例代碼“方法”文檔。
在 Visual Studio.NET 中創(chuàng)建工程
在啟動 VS.NET 之后,第一個任務(wù)是創(chuàng)建一個工程。 您可以單擊 New Project 按鈕或選擇 File New Project...。
出現(xiàn)一個 New Project 對話框。 在對話框左側(cè)的 Project Types 下,選擇您的編程語言。 在這個例子中,我們選擇 VB.NET。 在右側(cè)的 Templates 下,選擇一個工程模板。 為簡單起見,這里選擇 Windows application。
您將需要為工程(我們使用 OtnWinApp)和解決方案(我們使用 OtnSamples)指定有意義的名稱。 一個解決方案包含一個或多個工程。 當(dāng)一個解決方案僅包含一個工程時,許多人對二者使用相同的名稱。
添加引用
因為我們的工程必須與 Oracle 數(shù)據(jù)庫連接,因此必須添加一個到包含我們選擇的數(shù)據(jù)供給程序的 dll 的引用。 在 Solution EXPlorer 內(nèi),選擇 References 節(jié)點,右鍵單擊并選擇 Add Reference。 或者,您可以轉(zhuǎn)至菜單欄并選擇 Project,然后選擇 Add Reference。
出現(xiàn) Add Reference 對話框
從列表中選擇 Oracle.Dataaccess.dll,然后單擊 Select 按鈕,最后單擊 OK 按鈕,使您的工程能夠找到 ODP.NET 數(shù)據(jù)供給程序。
VB.NET/C# 語句
在添加引用之后,標(biāo)準(zhǔn)的做法是要添加 VB.NET Imports 語句、C# using 語句或 J# import 語句。 從技術(shù)上說這些語句不是必要的,但是使用它們可以讓您不需用冗長且完整名稱來引用數(shù)據(jù)庫對象。
按照慣例,這些語句出現(xiàn)在代碼文件的頂部或頂部四周,在命名空間或類聲明之前。
Imports System.Data ' VB.NETImports Oracle.DataAccess.Client ' ODP.NET Oracle managed providerusing System.Data; // C#using Oracle.DataAccess.Client; // ODP.NET Oracle managed providerimport System.Data.*; // J#import Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
連接字符串和對象
Oracle 連接字符串和 Oracle 名稱解析是不可分的。 假定我們在 tnsnames.ora 文件中定義了一個數(shù)據(jù)庫別名 OraDb,如下: OraDb= (DESCRipTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)) ) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=ORCL) ) )
要使用上面所述的在 tnsnames.ora 文件中定義的 OraDb 別名,您需要使用以下語法:
Dim oradb As String = "Data Source=OraDb;User Id=scott;PassWord=tiger;" ' VB.NETstring oradb = "Data Source=OraDb;User Id=scott;Password=tiger;"; // C#
不過,您可以修改連接字符串,這樣就不需用 tnsnames.ora 文件。 只需用在 tnsnames.ora 文件中定義別名的語句替換別名即可。 ' VB.NET Dim oradb As String = "Data Source=(DESCRIPTION=" _ + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)))" _ + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _ + "User Id=scott;Password=tiger;"string oradb = "Data Source=(DESCRIPTION=" // C# + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)))" + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" + "User Id=scott;Password=tiger;";
正如您在上面看到的那樣,用戶名和口令是以不加密的文本形式嵌入到連接字符串中的。 這是創(chuàng)建連接字符串的最簡單的方法。 然而,從安全的角度而言不加密文本的方法是不可取的。 而且,您需要了解編譯的 .NET 應(yīng)用程序代碼僅比不加密文本形式的源代碼文件稍微安全一點。 可以非常簡便的反編譯 .NET dll 和 exe 文件,進(jìn)而查看原始的不加密文本形式的內(nèi)容。 (加密實際上是正確的解決方案,但這個主題與我們這里的討論相差太遠(yuǎn)。)
接下來,您必須從連接類中完成一個連接對象的實例化。 連接字符串必須與連接對象關(guān)聯(lián)。
Dim conn As New OracleConnection(oradb) ' VB.NETOracleConnection conn = new OracleConnection(oradb); // C#
注重,通過將連接字符串傳遞給連接對象的構(gòu)造器(該構(gòu)造器進(jìn)行了重載),連接字符串與連接對象建立關(guān)聯(lián)。 構(gòu)造函數(shù)的其他重載答應(yīng)以下這些替代的語法:
Dim conn As New OracleConnection() ' VB.NETconn.ConnectionString = oradbOracleConnection conn = new OracleConnection(); // C#conn.ConnectionString = oradb;
在連接字符串與連接對象建立關(guān)聯(lián)之后,使用 Open 方法來創(chuàng)建實際的連接。
conn.Open() ' VB.NETconn.Open(); // C#
我們將在稍后介紹錯誤處理。
Command 對象
Command 對象用于指定執(zhí)行的 SQL 命令文本 — SQL 字符串或存儲過程。 類似于 Connection 對象,它必須從完成其類的實例化,并且它擁有一個重載的構(gòu)造函數(shù)。
Dim sql As String = "select dname from dept where deptno = 10" ' VB.NETDim cmd As New OracleCommand(sql, conn)cmd.CommandType = CommandType.Textstring sql = "select dname from dept where deptno = 10"; // C#OracleCommand cmd = new OracleCommand(sql, conn);cmd.CommandType = CommandType.Text;
不同的重載,語法的結(jié)構(gòu)稍微有點不同。 Command 對象有用于執(zhí)行命令文本的方法。 不同的方法適用于不同類型的 SQL 命令。
檢索標(biāo)量值
從數(shù)據(jù)庫中檢索數(shù)據(jù)可以通過實例化一個 DataReader 對象并使用 ExecuteReader 方法(它返回一個 OracleDataReader 對象)來實現(xiàn)。 通過將列名稱或以零為基數(shù)的列序號傳遞給項屬性 B.NET 開發(fā)人員可以訪問返回的數(shù)據(jù)。 另一種選擇是使用存取程序類型方法來返回列數(shù)據(jù)。
Dim dr As OracleDataReader = cmd.ExecuteReader() ' VB.NETdr.Read()Label1.Text = dr.Item("dname") ' retrieve by column nameLabel1.Text = dr.Item(0) ' retrieve the first column in the select listLabel1.Text = dr.GetString(0) ' retrieve the first column in the select list
C# 開發(fā)人員必須使用存取器方法來檢索數(shù)據(jù)。 有適當(dāng)類型的存取程序用于返回 .NET 本地數(shù)據(jù)類型,其他的存取程序用于返回本地 Oracle 數(shù)據(jù)類型。 以零為基數(shù)的序號被傳遞給存取程序,以指定返回哪一列。
OracleDataReader dr = cmd.ExecuteReader(); // C#dr.Read();label1.Text = dr.GetString(0); // C# retrieve the first column in the select list
在這個簡化的例子中,dname 的返回值是一個字符串,它用來設(shè)置標(biāo)簽控件的文本的屬性值(也是一個字符串)。 但假如檢索的是 deptno,而不是字符串,那么將出現(xiàn)數(shù)據(jù)類型不匹配的情況。 當(dāng)源數(shù)據(jù)類型與目標(biāo)數(shù)據(jù)類型不匹配時,.NET 運行時將嘗試隱式地轉(zhuǎn)換數(shù)據(jù)類型。 有時數(shù)據(jù)類型不兼容,則隱式轉(zhuǎn)換將失敗,并跳出一個異常警報。 但即使可以進(jìn)行隱式轉(zhuǎn)換,使用顯式數(shù)據(jù)類型轉(zhuǎn)換仍比用隱式數(shù)據(jù)類型轉(zhuǎn)換好。
到整型的顯式轉(zhuǎn)換顯示如下:
Label1.Text = CStr(dr.Item("deptno")) ' VB.NET integer to string cast
在隱式轉(zhuǎn)換上,C# 的容錯能力不如 VB.NET。 您必須自己執(zhí)行顯式轉(zhuǎn)換:
string deptno = dr.GetInt16("deptno").ToString(); // C#
您可以顯式地轉(zhuǎn)換標(biāo)量值以及數(shù)組。
關(guān)閉并清除
可以調(diào)用連接對象的 Close 方法或 Dispose 方法來關(guān)閉到數(shù)據(jù)庫的連接。 Dispose 方法調(diào)用 Close 方法。
conn.Close() ' VB.NETconn.Dispose() ' VB.NETconn.Close(); // C#conn.Dispose(); // C#作為可選項,C# 提供了一種在連接超出范圍時自動清除連接的非凡語法。 使用 using 要害字可啟用這一特性。
using (OracleConnection conn = new OracleConnection(oradb)){conn.Open();OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "select dname from dept where deptno = 10";cmd.CommandType = CommandType.Text; OracleDataReader dr = cmd.ExecuteReader(); dr.Read(); label1.Text = dr.GetString(0);}
您可以試驗在上機(jī)操作 1(從數(shù)據(jù)庫中檢索數(shù)據(jù))和上機(jī)操作 2(增加交互性)中學(xué)到的一些概念。
隨著 Microsoft 的 .NET 框架的逐漸流行,許多開發(fā)人員迫切想了解關(guān)于將 .NET 應(yīng)用程序與 Oracle 集成的最好的方式的信息 —— 不僅在基本的連通性方面,還包括與使用 Visual Studio.NET (VS.NET) 進(jìn)行有效的應(yīng)用程序開發(fā)的關(guān)系。 在本文中,我將說明構(gòu)建使用 Oracle 數(shù)據(jù)庫的 .NET 應(yīng)用程序所涉及到的基本但不可或缺的過程,包括:
如何添加工程引用,以在您的 .NET 工程中支持 Oracle 類;如何創(chuàng)建 Oracle 數(shù)據(jù)庫連接字符串;如何使用 Connection、Command 和 DataReader 對象。
您將有機(jī)會應(yīng)用您在三個上機(jī)操作實踐中學(xué)到的內(nèi)容,難度范圍從比較輕易到更復(fù)雜。
.NET Data Provider
除了基本的 Oracle 客戶端連通性軟件,.NET 應(yīng)用程序還需要使用稱為 managed data provider(其中 "managed" 指的是代碼由 .NET 框架治理)的工具。 數(shù)據(jù)供給程序是 .NET 應(yīng)用程序代碼和 Oracle 客戶端連通性軟件之間的層。 在幾乎所有情況下,最優(yōu)的性能都是通過使用為特定數(shù)據(jù)庫平臺優(yōu)化了的供給程序而不是一般的 .NET OLE DB 數(shù)據(jù)供給程序?qū)崿F(xiàn)的。
Oracle、Microsoft 和第三方供給商都提供了針對 Oracle 產(chǎn)品進(jìn)行了優(yōu)化的數(shù)據(jù)供給程序。 Oracle 和 Microsoft 免費提供其 Oracle 數(shù)據(jù)供給程序。 (Microsoft 為 .NET 框架的 1.1 版提供的供給程序包含在該框架中,不需要單獨下載或安裝。) 一些第三方數(shù)據(jù)供給程序支持 Oracle 的較早的版本,或者不需要安裝 Oracle 客戶端軟件。 在本文中,我們假設(shè)使用 Oracle Data Provider for .NET (ODP.NET),并單獨提供下載。
當(dāng)安裝了 ODP.NET 和所有要求的 Oracle 客戶端連通性軟件時,就可以開始使用 Visual Studio.NET 進(jìn)行應(yīng)用程序開發(fā)了。 在開始開發(fā)前,請先確認(rèn)客戶端連通性。 假如您在 VS.NET 所在的計算機(jī)上使用 SQL*Plus 能夠與 Oracle 連接,那么證實您已經(jīng)正確地安裝和配置了 Oracle 客戶端軟件。
假如您剛接觸 Oracle,那么請參閱 Oracle Data Provider for .NET 開發(fā)人員指南 10g 版本 1 (10.1) 中的“與 Oracle 數(shù)據(jù)庫連接”部分,以了解 ODP.NET 的背景信息,或參閱 Oracle 數(shù)據(jù)庫治理員指南 10g 版本 1 (10.1),以了解關(guān)于治理 Oracle 數(shù)據(jù)庫的通用信息。 您還可以查閱“使用 ODP.NET 與 Oracle 數(shù)據(jù)庫連接”示例代碼“方法”文檔。
在 Visual Studio.NET 中創(chuàng)建工程
在啟動 VS.NET 之后,第一個任務(wù)是創(chuàng)建一個工程。 您可以單擊 New Project 按鈕或選擇 File New Project...。
出現(xiàn)一個 New Project 對話框。 在對話框左側(cè)的 Project Types 下,選擇您的編程語言。 在這個例子中,我們選擇 VB.NET。 在右側(cè)的 Templates 下,選擇一個工程模板。 為簡單起見,這里選擇 Windows Application。
您將需要為工程(我們使用 OtnWinApp)和解決方案(我們使用 OtnSamples)指定有意義的名稱。 一個解決方案包含一個或多個工程。 當(dāng)一個解決方案僅包含一個工程時,許多人對二者使用相同的名稱。
添加引用
因為我們的工程必須與 Oracle 數(shù)據(jù)庫連接,因此必須添加一個到包含我們選擇的數(shù)據(jù)供給程序的 dll 的引用。 在 Solution Explorer 內(nèi),選擇 References 節(jié)點,右鍵單擊并選擇 Add Reference。 或者,您可以轉(zhuǎn)至菜單欄并選擇 Project,然后選擇 Add Reference。
出現(xiàn) Add Reference 對話框
從列表中選擇 Oracle.DataAccess.dll,然后單擊 Select 按鈕,最后單擊 OK 按鈕,使您的工程能夠找到 ODP.NET 數(shù)據(jù)供給程序。
VB.NET/C# 語句
在添加引用之后,標(biāo)準(zhǔn)的做法是要添加 VB.NET Imports 語句、C# using 語句或 J# import 語句。 從技術(shù)上說這些語句不是必要的,但是使用它們可以讓您不需用冗長且完整名稱來引用數(shù)據(jù)庫對象。
按照慣例,這些語句出現(xiàn)在代碼文件的頂部或頂部四周,在命名空間或類聲明之前。
Imports System.Data ' VB.NETImports Oracle.DataAccess.Client ' ODP.NET Oracle managed providerusing System.Data; // C#using Oracle.DataAccess.Client; // ODP.NET Oracle managed providerimport System.Data.*; // J#import Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
連接字符串和對象
Oracle 連接字符串和 Oracle 名稱解析是不可分的。 假定我們在 tnsnames.ora 文件中定義了一個數(shù)據(jù)庫別名 OraDb,如下: OraDb= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)) ) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=ORCL) ) )
要使用上面所述的在 tnsnames.ora 文件中定義的 OraDb 別名,您需要使用以下語法:
Dim oradb As String = "Data Source=OraDb;User Id=scott;Password=tiger;" ' VB.NETstring oradb = "Data Source=OraDb;User Id=scott;Password=tiger;"; // C#
不過,您可以修改連接字符串,這樣就不需用 tnsnames.ora 文件。 只需用在 tnsnames.ora 文件中定義別名的語句替換別名即可。 ' VB.NET Dim oradb As String = "Data Source=(DESCRIPTION=" _ + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)))" _ + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _ + "User Id=scott;Password=tiger;"string oradb = "Data Source=(DESCRIPTION=" // C# + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)))" + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" + "User Id=scott;Password=tiger;";
正如您在上面看到的那樣,用戶名和口令是以不加密的文本形式嵌入到連接字符串中的。 這是創(chuàng)建連接字符串的最簡單的方法。 然而,從安全的角度而言不加密文本的方法是不可取的。 而且,您需要了解編譯的 .NET 應(yīng)用程序代碼僅比不加密文本形式的源代碼文件稍微安全一點。 可以非常簡便的反編譯 .NET dll 和 exe 文件,進(jìn)而查看原始的不加密文本形式的內(nèi)容。 (加密實際上是正確的解決方案,但這個主題與我們這里的討論相差太遠(yuǎn)。)
接下來,您必須從連接類中完成一個連接對象的實例化。 連接字符串必須與連接對象關(guān)聯(lián)。
Dim conn As New OracleConnection(oradb) ' VB.NETOracleConnection conn = new OracleConnection(oradb); // C#
注重,通過將連接字符串傳遞給連接對象的構(gòu)造器(該構(gòu)造器進(jìn)行了重載),連接字符串與連接對象建立關(guān)聯(lián)。 構(gòu)造函數(shù)的其他重載答應(yīng)以下這些替代的語法:
Dim conn As New OracleConnection() ' VB.NETconn.ConnectionString = oradbOracleConnection conn = new OracleConnection(); // C#conn.ConnectionString = oradb;
在連接字符串與連接對象建立關(guān)聯(lián)之后,使用 Open 方法來創(chuàng)建實際的連接。
conn.Open() ' VB.NETconn.Open(); // C#
我們將在稍后介紹錯誤處理。
Command 對象
Command 對象用于指定執(zhí)行的 SQL 命令文本 — SQL 字符串或存儲過程。 類似于 Connection 對象,它必須從完成其類的實例化,并且它擁有一個重載的構(gòu)造函數(shù)。
Dim sql As String = "select dname from dept where deptno = 10" ' VB.NETDim cmd As New OracleCommand(sql, conn)cmd.CommandType = CommandType.Textstring sql = "select dname from dept where deptno = 10"; // C#OracleCommand cmd = new OracleCommand(sql, conn);cmd.CommandType = CommandType.Text;
不同的重載,語法的結(jié)構(gòu)稍微有點不同。 Command 對象有用于執(zhí)行命令文本的方法。 不同的方法適用于不同類型的 SQL 命令。
檢索標(biāo)量值
從數(shù)據(jù)庫中檢索數(shù)據(jù)可以通過實例化一個 DataReader 對象并使用 ExecuteReader 方法(它返回一個 OracleDataReader 對象)來實現(xiàn)。 通過將列名稱或以零為基數(shù)的列序號傳遞給項屬性 B.NET 開發(fā)人員可以訪問返回的數(shù)據(jù)。 另一種選擇是使用存取程序類型方法來返回列數(shù)據(jù)。
Dim dr As OracleDataReader = cmd.ExecuteReader() ' VB.NETdr.Read()Label1.Text = dr.Item("dname") ' retrieve by column nameLabel1.Text = dr.Item(0) ' retrieve the first column in the select listLabel1.Text = dr.GetString(0) ' retrieve the first column in the select list
C# 開發(fā)人員必須使用存取器方法來檢索數(shù)據(jù)。 有適當(dāng)類型的存取程序用于返回 .NET 本地數(shù)據(jù)類型,其他的存取程序用于返回本地 Oracle 數(shù)據(jù)類型。 以零為基數(shù)的序號被傳遞給存取程序,以指定返回哪一列。
OracleDataReader dr = cmd.ExecuteReader(); // C#dr.Read();label1.Text = dr.GetString(0); // C# retrieve the first column in the select list
在這個簡化的例子中,dname 的返回值是一個字符串,它用來設(shè)置標(biāo)簽控件的文本的屬性值(也是一個字符串)。 但假如檢索的是 deptno,而不是字符串,那么將出現(xiàn)數(shù)據(jù)類型不匹配的情況。 當(dāng)源數(shù)據(jù)類型與目標(biāo)數(shù)據(jù)類型不匹配時,.NET 運行時將嘗試隱式地轉(zhuǎn)換數(shù)據(jù)類型。 有時數(shù)據(jù)類型不兼容,則隱式轉(zhuǎn)換將失敗,并跳出一個異常警報。 但即使可以進(jìn)行隱式轉(zhuǎn)換,使用顯式數(shù)據(jù)類型轉(zhuǎn)換仍比用隱式數(shù)據(jù)類型轉(zhuǎn)換好。
到整型的顯式轉(zhuǎn)換顯示如下:
Label1.Text = CStr(dr.Item("deptno")) ' VB.NET integer to string cast
在隱式轉(zhuǎn)換上,C# 的容錯能力不如 VB.NET。 您必須自己執(zhí)行顯式轉(zhuǎn)換:
string deptno = dr.GetInt16("deptno").ToString(); // C#
您可以顯式地轉(zhuǎn)換標(biāo)量值以及數(shù)組。
關(guān)閉并清除
可以調(diào)用連接對象的 Close 方法或 Dispose 方法來關(guān)閉到數(shù)據(jù)庫的連接。 Dispose 方法調(diào)用 Close 方法。
conn.Close() ' VB.NETconn.Dispose() ' VB.NETconn.Close(); // C#conn.Dispose(); // C#作為可選項,C# 提供了一種在連接超出范圍時自動清除連接的非凡語法。 使用 using 要害字可啟用這一特性。
using (OracleConnection conn = new OracleConnection(oradb)){conn.Open();OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "select dname from dept where deptno = 10";cmd.CommandType = CommandType.Text; OracleDataReader dr = cmd.ExecuteReader(); dr.Read(); label1.Text = dr.GetString(0);}
您可以試驗在上機(jī)操作 1(從數(shù)據(jù)庫中檢索數(shù)據(jù))和上機(jī)操作 2(增加交互性)中學(xué)到的一些概念。