在c#/.net中是否有与mysql show columns语句等价的语句?

fae0ux8s  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(295)

我想以编程方式获取mysql数据库中表中所有列的属性。具体来说,我希望找到一个列是否可以为null,这样就可以在用c#/wpf编写的用户界面中识别所需的项。
我正在使用mysqlcommandbuilder.deriveparameters(command)来标识特定存储过程中所需的列。mysqlcommandbuilder.deriveparameters不受支持,mysql不支持将存储过程的参数设为可选。parameter.isnullable在deriveparameters返回的参数列表中始终返回false。
这是数据库中的一个表:

-- -----------------------------------------------------
-- Table `pacswlibinvtool`.`authorstab`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `pacswlibinvtool`.`authorstab` ;

CREATE TABLE IF NOT EXISTS `pacswlibinvtool`.`authorstab` (
    `idAuthors` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `LastName` VARCHAR(20) NOT NULL,
    `FirstName` VARCHAR(20) NOT NULL,
    `MiddleName` VARCHAR(20) NULL DEFAULT NULL,
    `YearOfBirth` VARCHAR(4) NULL DEFAULT NULL,
    `YearOfDeath` VARCHAR(4) NULL DEFAULT NULL,
    PRIMARY KEY (`idAuthors`, `LastName`, `FirstName`),
    UNIQUE INDEX `idAuthors_UNIQUE` (`idAuthors` ASC),
    INDEX `LastName` (`LastName` ASC),
    INDEX `LastCMFirst` (`LastName` ASC, `FirstName` ASC))
ENGINE = InnoDB
DEFAULT CHARACTER SET = UTF8MB4;

我希望能够识别c应用程序中可以为null的列。

xurqigkl

xurqigkl1#

您可以使用标准information\u schema.columns来探索列的属性

string cmdText = @"SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
                   WHERE Table_Name = 'authorstab'";
using(MySqlConnection cnn = GetMySqlConnection())
using(MySqlCommand cmd = new MySqlCommand(cmdText, cnn))
{
    DataTable dt = new DataTable();
    cnn.Open();
    using(MySqlDataReader reader = cmd.ExecuteReader())
        dt.Load(reader);
}

现在datatable dt中充满了行,每一行都包含表中每一列的所有信息,还包括一个名为isu nullable的boolean类型的列

yh2wf1be

yh2wf1be2#

请参考以下代码-

cn = new SqlConnection("Data Source=.;Initial Catalog=DBName;Integrated Security=True");
        cn.Open();
         SqlCommand command = new SqlCommand("SELECT COLUMN_NAME,IS_NULLABLE FROM information_schema.columns WHERE TABLE_NAME = 'My_Test_Table' ", cn);
        command.ExecuteNonQuery();
        var reader = command.ExecuteReader();

           while( reader.Read())
           {

                string str1="Column name is   "+ reader.GetString(0) + "  Null Allowed : - " + reader.GetString(1); 
                MessageBox.Show(str1);

            }
        }

相关问题