DataColumn workColumn = workTable.Columns.Add(
"CustomerID", typeof(Int32));
workColumn.AutoIncrement = true;//重點在這裡
資料庫資料表通常會有一個資料行或資料行群組,可唯一識別資料表的每個資料列。這個識別資料行或資料行群組又稱為主索引鍵。
當您將單一 DataColumn 識別為 DataTable 的 PrimaryKey 時,資料表會自動將資料行的 AllowDBNull 屬性設為 false,並將 Unique 屬性設為 true。如果是多重資料行的主索引鍵,則將只有 AllowDBNull 屬性會自動設為 false。
DataTable 的 PrimaryKey 屬性接收一或多個 DataColumn 物件的陣列做為其值,如下列範例所示。第一個範例定義單一資料行為主索引鍵。
下列範例新增四個資料行到 DataTable。
DataTable workTable = new DataTable("Customers");
DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32));
workCol.AllowDBNull = false;//不可為空值
workTable.ColumnChanged += new
DataColumnChangeEventHandler(OnColumnChanged);
workTable.ColumnChanging += new
ColumnChanging 會發生在欄位資料值進行改變時(跟dbgrid的ColumnChanging 意思差很多~)
可以在此事件中,抓到那個爛位發生資料值變更,且新值與舊值都抓得到
private static void DataTableColumnChanging()
鮮奶油打發,最大的重點就是隔冰打發~
我都是準備一個外盆(圖上的打蛋盆就可以),在裡面放冰塊跟水(因為我家冰塊不多啦,只好補點水),然後拿一個杯子裝鮮奶油,放在盆子裡--我都是拿圖上的那個塑膠量杯來打,它有耳朵可以抓,很方便(它有250cc-它是麵包機送的,所以比標準杯240cc還大,因為每次打的量約60~80cc,所以不會滿出來)
許多情況下,以何種順序將透過 DataSet 所進行的變更傳送給資料來源是很重要的。例如,如果更新了現有資料列的主索引鍵值,也加入了具有新主索引鍵值的資料列,則先進行更新再執行插入是很重要的。
您可以使用 DataTable 的 Select 方法,傳回只以特定 RowState 參考資料列的 DataRow 陣列。接著,您可以將傳回的 DataRow 陣列傳遞給 DataAdapter 的 Update 方法來處理已修改的資料列。您可指定要更新的資料列子集,藉以控制插入、更新和刪除的處理順序。
DataTable table = dataSet.Tables["Customers"];// First process deletes.adapter.Update(table.Select(null, null, DataViewRowState.Deleted));// Next process updates.adapter.Update(table.Select(null, null,DataViewRowState.ModifiedCurrent));// Finally, process inserts.adapter.Update(table.Select(null, null, DataViewRowState.Added));
// Assumes connection is a valid SqlConnection.SqlDataAdapter dataAdpater = new SqlDataAdapter("SELECT CategoryID, CategoryName FROM Categories", connection);dataAdpater.UpdateCommand = new SqlCommand("UPDATE Categories SET CategoryName = @CategoryName " +"WHERE CategoryID = @CategoryID" , connection);dataAdpater.UpdateCommand.Parameters.Add("@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add("@CategoryID", SqlDbType.Int);parameter.SourceColumn = "CategoryID";//重點在這裡parameter.SourceVersion = DataRowVersion.Original;//還有這裡DataSet dataSet = new DataSet();dataAdpater.Fill(dataSet, "Categories");DataRow row = dataSet.Tables["Categories"].Rows[0];row ["CategoryName"] = "New Category";dataAdpater.Update(dataSet, "Categories");