[.NET] [ADOX] 新增欄位
有時候需要使用ADOX去建立新增的資料表或資料庫,可參考[.NET][ADOX] 創建ACCESS資料庫 & 資料表做前置設定。
現在已經有可使用的資料表以及資料庫,且現在需要新增欄位:
// 可用的資料庫
// ADOX::CatalogClass^ cat
// 可用的資料表
// ADOX::TableClass^ ptb;
///////////////////////////////////////////////////
String^ sFieldName="ID";
ADOX::ColumnClass^ col=gcnew ADOX::ColumnClass();
col->ParentCatalog=pcat;
// 設定欄位名稱
col->default=sFieldName;
一些其他的欄位設定:
// 決定欄位是否可為空值
col->Properties["Nullable"]->default=true;
// 決定欄位是否可為長度零的字串
col->Properties["Jet OLEDB:Allow Zero Length"]->default=false;
// 決定欄位是否會自動遞增
col->Properties["AutoIncrement"]->default=true;
//決定欄位是否長度固定
col->Attributes=ADOX::ColumnAttributesEnum::adColFixed;
//決定欄位是否可為空值
col->Attributes=ADOX::ColumnAttributesEnum::adColNullable;
Note:Properties及Attributes無法同時使用,否則會產生Exception Error如下:
[Additional information: 多重步驟 OLE DB 操作發生錯誤。請檢查每一個可用的 OLE DB 狀態值。尚未完成任何操作。]
列出一些可能會需要的資料型態設定:
1. 需要新添加數字資料型態:
col->Type=ADOX::DataTypeEnum::adInteger;
ptb->default->Append(col, ADOX::DataTypeEnum::adInteger, 0);
2. 需要新添加雙精準度的數字資料型態:
col->Type=ADOX::DataTypeEnum::adDouble;
ptb->default->Append(col, ADOX::DataTypeEnum::adDouble, 0);
3. 需要新添加文字資料型態:
ptb->default->Append(col, ADOX::DataTypeEnum::adVarChar, 30);
4. 需要新添加日期資料型態:
col->Type=ADOX::DataTypeEnum::adDate;
ptb->default->Append(col, ADOX::DataTypeEnum::adDate, 0);
Note:若文字資料類型同日期、數字等有先定義的話,則會產生Exception Error如下:
Additional information: 類型無效。
若日期、數字等沒先定義,會導致資料仍是文字型態的資料類型。
撰寫工具:VS2008 VC.NET
沒試過,別說你不行!該努力就去努力,別過了再說後悔。
〈請多指教,新手上路〉