摘要:在本文演示了如何使用C# Builder Personal中使用ADO.Net方法,連接到一個MSDE數據庫,並創建一個表,插入和選擇記錄,然後在一個數據網格(DataGrid)中顯示記錄。
C# Builder一大新特色就是可以使用Borland Data Providers for ADO.NET在設計時用來支持連接並操作數據庫,特定的用於DB2、InterBase、Oracle、SQL Server/MSDE等的驅動程序,以及添加第三方驅動程序(如dbExpress)的潛力。 然而,C# Builder Personal不帶有Borland Data Providers,這就意味著你只能采用"最簡單的"ADO.Net方法。
在本文中,我將介紹如何使用C# Builder Personal與簡單的ADO.Net結合,連接到一個MSDE數據庫,創建一個表,插入記錄,從這個表中選擇記錄,然後在一個數據網格(DataGrid)中顯示。
我假定你已經安裝了MSDE(C# Builder中帶有--包括Personal版)。
SqlConnection
啟動C# Builder,並且點擊File | New - C# Application來啟動一個新建項目。 放置一個SqlConnection控件,並且設置Connection屬性為
Data Source=.; Initial Catalog=master; Integrated security=SSPI
注意master是一個帶有MSDE的數據庫,但是你可以使用任何其他數據庫或者.Net數據庫管理系統(必須因此修改ConnectionString)。
在WinForm上放置一個按鈕,設置標題為"Connect",並且在button_Click事件處理程序中輸入下面的代碼來打開sqlConnection(注意我再次設置ConnectionString屬性,但是這次只是介紹如何在"純粹"在代碼中設置)。
private void button1_Click(object sender, System.EventArgs e)
{
try
{
sqlConnection1.ConnectionString = "Data Source=.; Initial Catalog=master; Integrated security=SSPI";
sqlConnection1.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
這是第一個測試,並且是最容易失敗的(所有其他的步驟都是很容易的)。 如果出現異常,那麼必須修改ConnectionString來確定它包含正確的引用(注意:當然還要確定SQL Server / MSDE是運行的)。
SqlCommand
一旦你可以產生一個成功的連接,就是放置SqlCommand控件的時候了。這是一個可用於執行命令的控件:SQL語句。 你可以使用對象檢驗器(Object Inspector)指出Connection屬性為SqlConnection控件,並且放置在CommandText屬性中執行的命令。 注意用於Connection屬性的下拉ComboBox看上去並不象列出SqlConnection控件,但是"竅門"就是雙擊屬性值(這就列出所有可能的值)。 另一種方法是輸入你想使用的控件的名稱,所以"s"將立刻選擇"sqlConnection1"。 為了再次清除Connection屬性,你需要鍵入"(",這將導致再次出現"(none)"。
因為可能看看如何使用"純"代碼做這些事情是非常有益的,我現在將在源代碼中指定所有必需的屬性值(包括我想執行的SQL命令)。
所以,放置另一個按鈕,設置標題為"SQL",並且在button_Click事件處理程序中編寫下面的代碼來創建一個表(如果這個表存在,那麼首先要刪除它),並且插入三個記錄:
private void button2_Click(object sender, System.EventArgs e)
{
try
{
sqlCommand1.Connection = sqlConnection1;
sqlCommand1.CommandText = "drop table test42";
try
{
sqlCommand1.ExecuteNonQuery(); // 創建表
}
catch {}; // 忽略
sqlCommand1.CommandText = "create table test42 (id int NOT NULL, name nvarchar(42))";
sqlCommand1.ExecuteNonQuery(); //創建表
sqlCommand1.CommandText = "insert into test42 values(1, 'Bob Swart')";
sqlCommand1.ExecuteNonQuery(); //插入表
sqlCommand1.CommandText = "insert into test42 values(2, 'Erik Mark Pascal Swart')";
sqlCommand1.ExecuteNonQuery(); //插入表
sqlCommand1.CommandText = "insert into test42 values(3, 'Natasha Louise Delphine Swart')";
sqlCommand1.ExecuteNonQuery(); // 插入表
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}