2012-10-03 5 views
1

DataTable에서 어떤 열이 nullable인지 알아낼 방법이 있습니까? DataColumn.AllowDBNull은 데이터 세트의 디자인 모드에서 true 또는 false로 설정할 수 있지만이 정보는 데이터베이스에서 직접 가져오고 싶습니다.DataTable에서 어떤 열이 nullable인지 알아 보는 방법은 무엇입니까?

MySQL 데이터베이스의 값으로 채워진 DGV가 있고 DGV의 DataSource를 DataTable에 바인딩했습니다. 나는 데이터베이스의 열 스키마를 검색하기로 결정 솔루션으로

var nullableDataColumns = dataTable.Columns.Cast<DataColumn>().Where(c => c.AllowDBNull); 
foreach (var col in nullableDataColumns) { 
    Console.WriteLine(col.ColumnName); 
} 
+0

nullable 열 또는 데이터베이스에 대해 DataTable을 직접 쿼리 하시겠습니까? –

+0

가능한 경우 DataTable을 쿼리하려고합니다. 오프라인 상태에서 DataTable에 새 데이터를 입력하고 있습니다. DataTable에 nullable 및 Nullable 열의 정보를 저장할 수있는 방법이 있습니까? – user1654847

답변

0

당신은 DataTable을에 DataColumns이 널있는 확인하려면 다음을 사용할 수 있습니다 (true로 AllowDBNull 세트가) which Collumns AllowDBNull :

 DataTable dbColumnsSchema; 
    using (MySqlConnection connection = new MySqlConnection(ConnectionString)) 
     { 
      connection.Open(); 
     dbColumnsSchema = connection.GetSchema("Columns"); 
      connection.Close(); 

     } 

     AssignMandatoryColumns(dbColumnsSchema); 

    } 

    private void AssignMandatoryColumns(DataTable table) 
    { 
     foreach (DataRow row in table.Rows) 
      if (row["TABLE_NAME"].ToString()==myTableName) 
       if(row["IS_NULLABLE"].ToString()=="NO") 
       { string columnName = row["COLUMN_NAME"].ToString(); 
        myDataSet.Tables[myTableName].Columns[columnName]. 
         AllowDBNull = false; 
       } 
    } 
+0

불행히도 기본적으로 DataSet 디자인 모드에서 값을 변경하지 않는 한 모든 DataColumn.AllowDBNull이 true로 설정됩니다. – user1654847

관련 문제