DataColumn workColumn = workTable.Columns.Add(
    "CustomerID", typeof(Int32));
workColumn.AutoIncrement = true;//重點在這裡

pagichang 發表在 痞客邦 留言(0) 人氣()

資料庫資料表通常會有一個資料行或資料行群組,可唯一識別資料表的每個資料列。這個識別資料行或資料行群組又稱為主索引鍵。

當您將單一 DataColumn 識別為 DataTablePrimaryKey 時,資料表會自動將資料行的 AllowDBNull 屬性設為 false,並將 Unique 屬性設為 true。如果是多重資料行的主索引鍵,則將只有 AllowDBNull 屬性會自動設為 false


DataTable 的 PrimaryKey 屬性接收一或多個 DataColumn 物件的陣列做為其值,如下列範例所示。第一個範例定義單一資料行為主索引鍵。

pagichang 發表在 痞客邦 留言(0) 人氣()

下列範例新增四個資料行到 DataTable

DataTable workTable = new DataTable("Customers");

DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32));
workCol.AllowDBNull = false;//不可為空值

pagichang 發表在 痞客邦 留言(0) 人氣()

DataTable某些欄位是根據另一個欄位計算出來了(例如:價目表上原價X元,會員價一律打0.9折)

workTable.Columns.Add("Price", typeof(Double));
workTable.Columns.Add("NumberPrice", typeof(Double), "Price* 0.9");//運算式是string格式喔

pagichang 發表在 痞客邦 留言(0) 人氣()

有兩種建立DataTable的方式

1.下列範例將建立 DataTable 物件的執行個體,並為它指派 "Customers" 名稱。
DataTable workTable = new DataTable("Customers");

pagichang 發表在 痞客邦 留言(0) 人氣()

欄位資料的驗證(check某欄的值,不符合需求,即取消其欄位的變更)


DataTable workTable  = new DataTable();

pagichang 發表在 痞客邦 留言(0) 人氣()


workTable.ColumnChanged  += new
  DataColumnChangeEventHandler(OnColumnChanged);
workTable.ColumnChanging += new

pagichang 發表在 痞客邦 留言(0) 人氣()

ColumnChanging 會發生在欄位資料值進行改變時(跟dbgrid的ColumnChanging 意思差很多~)
可以在此事件中,抓到那個爛位發生資料值變更,且新值與舊值都抓得到

        private static void DataTableColumnChanging()

pagichang 發表在 痞客邦 留言(0) 人氣()



聽說用中筋麵粉做出來的蛋糕比較好捲,之前好幾次都想試試,但老是忘記了(每次都是烤完才發現)

pagichang 發表在 痞客邦 留言(0) 人氣()


冰箱有好幾塊巧克力磚(我妹的),我自己的巧克力磚還沒開封,就放冰箱外,冰箱太小不能全部放進去
每次開冰箱看到巧克力磚都會想,好想來做什麼把它消耗掉

pagichang 發表在 痞客邦 留言(0) 人氣()



鮮奶油打發,最大的重點就是隔冰打發~
我都是準備一個外盆(圖上的打蛋盆就可以),在裡面放冰塊跟水(因為我家冰塊不多啦,只好補點水),然後拿一個杯子裝鮮奶油,放在盆子裡--我都是拿圖上的那個塑膠量杯來打,它有耳朵可以抓,很方便(它有250cc-它是麵包機送的,所以比標準杯240cc還大,因為每次打的量約60~80cc,所以不會滿出來)

pagichang 發表在 痞客邦 留言(0) 人氣()

上星期六要在男友回家前趕作一份奇異果戚風瑞士捲,好讓他帶回去給親友享受
不過鮮奶油沒有了,只好改了一下製程,先做蛋糕體,在趁著烘烤時間衝去超市買,為了趕時間,我打蛋不太敢用電動打蛋器,因為之前用了它,打了十幾分鐘都還沒打好蛋白,所以我用手動打蛋器(圖下那支)自己打(我五分鐘就打好蛋白了)


pagichang 發表在 痞客邦 留言(1) 人氣()

在dataset中,可能有多個表格(DataTable),而其中有可能某table與另一table有Master-Detail的關係,可以用dataset.relations建立關聯

下列程式碼範例在 DataSet 中使用兩個 DataTable 物件來建立 DataRelation。每個 DataTable 都包含一個名為 CustID 的資料行,做為兩個 DataTable 物件間的連結。此範例會將一個 DataRelation 加入 DataSetRelations 集合中。範例中第一個引數指定即將被建立的 DataRelation 的名稱,第二個引數設定父 DataColumn,第三個引數則設定子 DataColumn

pagichang 發表在 痞客邦 留言(0) 人氣()

許多情況下,以何種順序將透過 DataSet 所進行的變更傳送給資料來源是很重要的。例如,如果更新了現有資料列的主索引鍵值,也加入了具有新主索引鍵值的資料列,則先進行更新再執行插入是很重要的。

您可以使用 DataTableSelect 方法,傳回只以特定 RowState 參考資料列的 DataRow 陣列。接著,您可以將傳回的 DataRow 陣列傳遞給 DataAdapterUpdate 方法來處理已修改的資料列。您可指定要更新的資料列子集,藉以控制插入、更新和刪除的處理順序。



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));


pagichang 發表在 痞客邦 留言(0) 人氣()

下列範例示範如何明確設定 DataAdapterUpdateCommand,以更新已修改的資料列。請注意,UPDATE 陳述式中 WHERE 子句指定的參數是設定為使用 SourceColumnOriginal 值。這一點相當重要,因為 Current 值可能已經修改,而不符合資料來源中的值。Original 值是用來從資料來源填入 DataTable 的值。

// 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");

pagichang 發表在 痞客邦 留言(0) 人氣()