作者hpo14 (陌生)
看板C_Sharp
标题Re: [问题] 读 Access 档建立 Primary Key
时间Mon Sep 15 15:48:52 2008
小弟自己写了一段很丑的方式来解决问题
OleDbConnection conn = new OleDbConnection(connStr);
// 抓取 SchemaTable
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Key_Column_Usage, null);
conn.Close();
// 抓出具有 PrimaryKey 的 Table Name
var query =
from sch in dt.AsEnumerable()
where ("PrimaryKey" == sch["CONSTRAINT_NAME"].ToString())
select new
{
table = sch["TABLE_NAME"].ToString(),
// 筛选出各 Table 里面的 PrimaryKey
col =
from sch2 in dt.AsEnumerable()
where sch["TABLE_NAME"].ToString() == sch2["TABLE_NAME"].ToString()
select sch2["COLUMN_NAME"].ToString()
};
// 设定 Table 的 PrimaryKey
foreach (var v in query.Distinct())
{
int col = v.col.Count();
DataColumn[] dc = new DataColumn[col];
foreach (string colname in v.col)
{
dc[--col] = dataSet.Tables[v.table].Columns[colname];
}
dataSet.Tables[v.table].PrimaryKey = dc;
}
有更好的写法的话,麻烦请指教小弟一下 @@
另外有没有办法,可以自动设定"自动递增"的栏位??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.78.243