2012-02-24 4 views
2

指定された列がMS Access 2000データベースに存在する場合はプログラムチェックが必要ですが、それがない場合は追加してください。私は.NET Framework 2.0を使用しています oleDbConnection.GetSchema()メソッドを使用しようとしましたが、メタデータに列名が見つかりませんでした(私は本当にpro、huhではありません)。 私は助けていただければ幸いです。指定した列がMS Accessデータベースに存在するかどうかを確認するにはどうすればよいですか?

お返事ありがとうございます。これは私のO/Rマッパーの一部であるコードである

bool flag = false; string[] restrictions = new string[] { null, null, mytable }; 
DataTable dtColumns = oleDbConnection1.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, restrictions); 
foreach (DataRow row in dtColumns.Rows) 
{ 
    if (mycolumnname==(string)row["COLUMN_NAME"]) flag = true; 
} 

答えて

0

:ここ は、私は私のコードで使用される溶液です。あなたはそれが他のクラスに依存しているので、それを使用することはできませんが、私はあなたがその写真を得ることを願っています。

これは、テーブルのカラム

private void RetrieveColumnInfo(OleDbConnection cnn, TableSchema tableSchema, 
      string[] restrictions, Func<string, string> prepareColumnNameForMapping) 
{ 
    using (DataTable dtColumns = 
       cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, restrictions)) { 
     string AutoNumberColumn = RetrieveAutoNumberColumn(cnn, tableSchema); 
     foreach (DataRow row in dtColumns.Rows) { 
      var col = new TableColumn(); 
      col.ColumnName = (string)row["COLUMN_NAME"]; 
      try { 
       col.ColumnNameForMapping = 
        prepareColumnNameForMapping(col.ColumnName); 
      } catch (Exception ex) { 
       throw new UnimatrixExecutionException(
        "Error in delegate 'prepareColumnNameForMapping'", ex); 
      } 
      col.ColumnAllowsDBNull = (bool)row["IS_NULLABLE"]; 
      col.ColumnIsIdentity = col.ColumnName == AutoNumberColumn; 
      DbColumnFlags flags = (DbColumnFlags)(long)row["COLUMN_FLAGS"]; 
      col.ColumnIsReadOnly = 
       col.ColumnIsIdentity || 
       (flags & (DbColumnFlags.Write | DbColumnFlags.WriteUnknown)) == 
                   DbColumnFlags.None; 
      if (row["CHARACTER_MAXIMUM_LENGTH"] != DBNull.Value) { 
       col.ColumnMaxLength = (int)(long)row["CHARACTER_MAXIMUM_LENGTH"]; 
      } 
      col.ColumnDbType = GetColumnDbType((int)row["DATA_TYPE"]); 
      col.ColumnOrdinalPosition = (int)(long)row["ORDINAL_POSITION"]; 
      GetColumnDefaultValue(row, col); 

      tableSchema.ColumnSchema.Add(col); 
     } 
    } 
} 
+0

感謝を取得し、この

string[] restrictions = new string[] { null, null, tableName }; 

のような制約を定義します!それは私が必要とした迅速で汚れた解決策を作り出すのに十分だった=) – user1231379

関連する問題