在c#/.net中是否有与MySQL show columns语句等价的语句?
我希望以编程方式获取MySQL数据库中表中所有列的属性。具体地说,我希望找到一个列是否可以为空,这样就可以在用C#/WPF编写的用户界面中识别所需的项 我正在使用MySqlCommandBuilder.DeriveParameters(命令)来标识特定存储过程中所需的列,和。Parameter.IsNullable在由DeriveParameters返回的参数列表中始终返回false 这是数据库中的一个表:在c#/.net中是否有与MySQL show columns语句等价的语句?,c#,mysql,.net,C#,Mysql,.net,我希望以编程方式获取MySQL数据库中表中所有列的属性。具体地说,我希望找到一个列是否可以为空,这样就可以在用C#/WPF编写的用户界面中识别所需的项 我正在使用MySqlCommandBuilder.DeriveParameters(命令)来标识特定存储过程中所需的列,和。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的列。您可以使用标准的.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充满了行,每行包含表中每一列的所有信息,还包括一个名为is_NULLABLE的列,类型为boolean您可以使用标准的.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充满了行,每行都包含表中每一列的所有信息,还包括一个名为is_NULLABLE的布尔型列,请参阅下面的代码-
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);
}
}
请参阅以下代码-
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);
}
}