在access2013中,備註類型已經改名爲長文本,原來的文本字段改名爲短文本,短文本字段可以指字段長度。
Access數據庫對於文本和備註類型的數據類型定義(DATA_TYPE)都是爲130,無法直接區分,找了N多網頁,包括MSDN都沒有描述有關COLUMN_FLAGS的說明,還是自己分析一下:
COLUMN_FLAGS爲64位(8字節)的十六進制的值,組合了數據類型和必填字段等信息
其中最後2個字節有效,最後一個字節一直爲0x0A,有變化的是最後第二個字節,即:
對於文本類型的爲0x00;備註類型爲0x80;
對於非必填字段爲0x40;必填字段爲0x60
組合後:
文本必填: 0x6A
文本非必填:0x4A
備註必填: 0xEA
備註非必填:0xCA
最後可以得到COLUMN_FLAGS右移7位後可以區分文本類型和備註類型
DataTable dt = m_OLEDBCon.GetOleDbSchemaTable(
OleDbSchemaGuid.Columns,
new object[] {null, null, "表名稱", null});
DataRow[] drs = dt.Select("COLUMN_NAME='字段名稱'");
if(drs.Length > 0 && Convert.ToInt32(drs[0]["DATA_TYPE"]) == 130)
{
//文本類型if ( (Convert.ToInt64(drs[0]["COLUMN_FLAGS"]) >> 7) == 1)
{
//=1爲備註字段 }
else
{
//=0爲文本字段}
}