C# 如何检查SQL模式是否允许列为NULL?

C# 如何检查SQL模式是否允许列为NULL?,c#,sql,sql-server,schema,C#,Sql,Sql Server,Schema,您好,我有以下代码,其中列出了给定SQL表的所有列名: public static DataTable GetSQLTableSchema(string _connectionString,string _tableName) { string connectionString = _connectionString; string tableName = _tableName.Trim(); DataTa

您好,我有以下代码,其中列出了给定SQL表的所有列名:

public static DataTable GetSQLTableSchema(string _connectionString,string _tableName) 
        {
            string connectionString = _connectionString;
            string tableName = _tableName.Trim();
            DataTable schemaTable = new DataTable();
            SqlDataReader sqlDataReader; 


            try {

                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    string queryString = "SELECT * FROM " + tableName;

                    using(SqlCommand queryCMD = new SqlCommand(queryString))
                    {
                        queryCMD.Connection = connection;
                        connection.Open();
                        sqlDataReader = queryCMD.ExecuteReader(CommandBehavior.KeyInfo);
                        schemaTable = sqlDataReader.GetSchemaTable();
                        connection.Close();  
                    }

                }

            }catch(Exception ex)
            {
                Console.WriteLine(ex);                
            }

            #region Print Table Schema

            foreach(DataRow field in schemaTable.Rows)
            {
                foreach(DataColumn property in schemaTable.Columns)
                {
                    Console.WriteLine("{0} - {1}",field[0],//HERE!); 
                }
            }            

            #endregion

            return schemaTable;

        }

在我标记的行(这里!)处,我想打印列的名称和一个布尔值,无论它是否为
允许NULL
。但我从字段中得到的只是一个
itemarray[]
。我确信数组包含的其中一个值显示了
allow NULL
值。我想不出是哪一个。此外,我认为必须有一种更优雅的方式。

DataColumn有一个
AllowDBNull
属性


假设有问题的ODBC驱动程序正确地返回模式表,这将为您提供所需的信息。

DataColumn有一个
AllowDBNull
属性

SELECT column_name, is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = ?


假设有问题的ODBC驱动程序正确地返回模式表,这将为您提供所需的信息。

DataColumn有一个
AllowDBNull
属性

SELECT column_name, is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = ?


假设有问题的ODBC驱动程序正确地返回模式表,这将为您提供所需的信息。

DataColumn有一个
AllowDBNull
属性

SELECT column_name, is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = ?

假设有问题的ODBC驱动程序正在正确返回模式表,这将为您提供所需信息。

您可以执行以下操作:

SELECT column_name, is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = ?
Console.WriteLine(property.ColumnName +" = "+ field[property].ToString());
:

获取或设置一个值,该值指示此列中属于该表的行是否允许空值

你可以做:

Console.WriteLine(property.ColumnName +" = "+ field[property].ToString());
:

获取或设置一个值,该值指示此列中属于该表的行是否允许空值

你可以做:

Console.WriteLine(property.ColumnName +" = "+ field[property].ToString());
:

获取或设置一个值,该值指示此列中属于该表的行是否允许空值

你可以做:

Console.WriteLine(property.ColumnName +" = "+ field[property].ToString());
:

获取或设置一个值,该值指示此列中属于该表的行是否允许空值


我的SQL表中的第一列是ID,它不允许NULL。当使用您的解决方案时,控制台为表中的每一列打印ID-true!所以我找到了我一直在寻找的解决方案,它看起来如下:Console.WriteLine(property.ColumnName+“=”+field[property].ToString());:请修改您的帖子,我会将其标记为awnser。@bodycountPP已更新,但不确定如何检查空值?它至少告诉我在哪里查找AllowDBNULL值。谢谢我的SQL表中的第一列是ID,它不允许NULL。当使用您的解决方案时,控制台为表中的每一列打印ID-true!所以我找到了我一直在寻找的解决方案,它看起来如下:Console.WriteLine(property.ColumnName+“=”+field[property].ToString());:请修改您的帖子,我会将其标记为awnser。@bodycountPP已更新,但不确定如何检查空值?它至少告诉我在哪里查找AllowDBNULL值。谢谢我的SQL表中的第一列是ID,它不允许NULL。当使用您的解决方案时,控制台为表中的每一列打印ID-true!所以我找到了我一直在寻找的解决方案,它看起来如下:Console.WriteLine(property.ColumnName+“=”+field[property].ToString());:请修改您的帖子,我会将其标记为awnser。@bodycountPP已更新,但不确定如何检查空值?它至少告诉我在哪里查找AllowDBNULL值。谢谢我的SQL表中的第一列是ID,它不允许NULL。当使用您的解决方案时,控制台为表中的每一列打印ID-true!所以我找到了我一直在寻找的解决方案,它看起来如下:Console.WriteLine(property.ColumnName+“=”+field[property].ToString());:请修改您的帖子,我会将其标记为awnser。@bodycountPP已更新,但不确定如何检查空值?它至少告诉我在哪里查找AllowDBNULL值。非常感谢。