注意第一個try-catch程序塊只是在表不存在的情況下用來忽略異常的(在這樣情況下你不能刪除表)。
我必須使用SqlCommand的ExecuteNonQuery方法,因為這個SQL語句不返回數據,並且只意味著刪除表,創建一個新表或者插入新的記錄(顯然,ExecuteNonQuery還必須在刪除記錄的時候被調用)。
SqlDataAdapter、DataSet和DataGrid
既然我們已經建立了與MSDE " master "數據庫的連接,並且創建了一個帶有三個記錄的表" test42 ",現在是時間來選擇數據並且把它們連接到表格中了。 因為這個目的,我想使用三個控件:一個SqlDataAdapter、一個DataSet和一個顯然用來顯示數據的DataGrid。
首先放置一個SqlDataAdapter控件。 這個控件還有用於SelectCommand、InsertCommand、UpdateCommand和DeleteCommand的子屬性。 這些命令中的每一個都是相當於一個我們在前面章節中使用的SqlCommand控件。 這次,我們只需要SelectCommand,你必須指定它的Connection屬性,然後CommandText屬性中指定一個SELECT語句(注意,我再次在代碼中完成這些工作)。
現在,放置一個DataSet控件。 這個DataSet將被SelectCommand的結果填充。 順便說一句,與Delphi不同,.Net DataSet可以包含多個表。
最後,放置一個DataGrid控件。 我們可以指定DataGrid的DataSource和DataMember屬性為連接DataSet和Table,以便浏覽數據。配置DataGrid,使它更好看些(我將跳過這個步驟,把精力集中在Data Components)。
下面這段代碼初始化SqlDataAdapter控件的SelectCommand屬性,並且使用SelectCommand來填充DataSet,最終把它綁定到DataGrid上(在第三個按鈕的button_click事件處理程序中):
private void button3_Click(object sender, System.EventArgs e)
{
try
{
sqlDataAdapter1.SelectCommand.Connection = sqlConnection1;
sqlDataAdapter1.SelectCommand.CommandText = "select * from test42";
sqlDataAdapter1.Fill(dataSet1, "MyTable42");
dataGrid1.DataSource = dataSet1;
dataGrid1.DataMember = "MyTable42"; // same name as above
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
注意,在這段代碼中填充DataSet(被SqlDataAdapter)時指定的名稱與綁定DataSet到DataGrid時指定的DataMember屬性值同名。
這將在DataGrid中顯示select語句的輸出,如下:
正如你所看到的,SqlConnection與數據庫通訊,然後SqlCommand和SqlDataAdapter使用Connection來執行命令(並且使用結果選擇性地填充.Net DataSet)。