1
MS-Accessデータベース内のテーブルのID列名をC#コードを使用して調べたいと思います。C#コードを使用してMS-Accessデータベース内のテーブルのID列名を見つける方法?
私を助けてください。
MS-Accessデータベース内のテーブルのID列名をC#コードを使用して調べたいと思います。C#コードを使用してMS-Accessデータベース内のテーブルのID列名を見つける方法?
私を助けてください。
このコードは、私のO/Rマッパーの一部である
private string RetrieveAutoNumberColumn(OleDbConnection cnn, TableSchema tableSchema)
{
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [" + tableSchema.TableName + "] WHERE False", cnn);
DataTable dtSchema = adapter.FillSchema(new DataTable(), SchemaType.Source);
if (dtSchema == null) {
throw new UnimatrixMappingException("Table \"" + tableSchema.TableName + "\" not found. Connection = " + this._connectString);
}
string columnName = null;
for (int i = 0; i < dtSchema.Columns.Count; i++) {
if (dtSchema.Columns[i].AutoIncrement) {
columnName = dtSchema.Columns[i].ColumnName;
break;
}
}
return columnName;
}
あなたは必ずしも同じではありません主キーを(取得することができ、この
var cnn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\Data\MyDatabase.mdb\";OLE DB Services=-1");
のような接続を作成します。オートナンバー型列として)
private static void RetrievePrimaryKeyInfo(OleDbConnection cnn, TableSchema tableSchema, string[] restrictions)
{
using (DataTable dtPrimaryKeys = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, restrictions)) {
foreach (DataRow row in dtPrimaryKeys.Rows) {
string columnName = (string)row["COLUMN_NAME"];
//TODO: Do something useful with columnName here
}
}
}
restrictions
は、
string[] restrictions = new string[] { null, null, tableName };