C# 无法从数据库中获取列类型
下面是一些代码:C# 无法从数据库中获取列类型,c#,mysql,database,visual-studio,odbc,C#,Mysql,Database,Visual Studio,Odbc,下面是一些代码: OdbcConnection connection = new OdbcConnection(@"DRIVER={MySQL ODBC 5.1 Driver};SERVER=" + ip + ";DATABASE=db_name;USER=user;PASSWORD=" + dbPw + ";"); connection.Open(); string queryString = query; OdbcCommand command = new OdbcCommand(quer
OdbcConnection connection = new OdbcConnection(@"DRIVER={MySQL ODBC 5.1 Driver};SERVER=" + ip + ";DATABASE=db_name;USER=user;PASSWORD=" + dbPw + ";");
connection.Open();
string queryString = query;
OdbcCommand command = new OdbcCommand(queryString);
command.Connection = connection;
OdbcDataReader myReader = command.ExecuteReader();
int fieldsN = myReader.FieldCount;
StringBuilder sb = new StringBuilder();
while (myReader.Read())
{
for (int i = 0; i < fieldsN; i++ )
{
sb.Append(myReader.GetString(i) + " ");
}
sb.Append(", ");
}
connection.Close();
//Console.WriteLine(sb.ToString());
这段代码可以很好地处理查询,如从某个表中选择*或从某个表中选择某物
但是,当我使用某个_表中的SHOW列时,它失败了
下面是我得到的错误:
无法将“System.DBNull”类型的对象强制转换为“System.String”类型
此错误发生在myReader.GetString行的某个位置
我尝试创建一个if语句来检查myReader.GetStringi是否为System.DBNull,但没有效果。无论我做什么,它总是出错。我不明白发生了什么事
谢谢你的帮助 在调用GetString之前,需要检查DBNull
通常,您需要注意可空列的值。DB通过返回一个名为DBNull的特殊对象来表示返回的值为null。您不能将其强制转换为字符串或任何其他形式,因此您的代码应该使用以下方法检查null:
if (!myReader.IsDBNull(i)) {
sb.Append(myReader.GetString(i) + " ");
}
谢谢,这正是我需要的。但是,mgnoonan击败了你:
if (!myReader.IsDBNull(i)) {
sb.Append(myReader.GetString(i) + " ");
}