c# - 如何使用 MySqlDataReader 从数据库中检索值?

标签 c# mysql .net

通过使用此代码,我想从数据库中检索表中的一些行:

ID int
ParentID int?
IsVisible bool

MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection);
myConnection.Open();
MySqlDataReader myReader = myCommand.ExecuteReader();

try
{
  while(myReader.Read()) 
  {
    //here I want to retrieve the all returned data
  }
}
finally
{
  myReader.Close();
  myConnection.Close();
}

最佳答案

有点像

while(myReader.Read()) 
{
ID = AsInteger(myReader["ID"]).Value;
Parent = AsInteger(myReader["Parent"]);
IsVisble = AsBoolean(myReader["IsVisible"]);
}

Where As... are helper functions 可能像

private static int? AsInteger(Object argValue)
{
   if ((argValue == null) || (argValue == DBNull.Value))
   {
     return null;
   }
   return Convert.ToInt(argValue);
}

等等

在无处不在的静态帮助程序类中使用所有的帮助程序方法通常很麻烦,除非您打算在一个类中完成所有这些工作。

注意 DBNull,它不是空的。 :(

如果 Blob 不是 DBNull,则它们是 byte[]。也没有做过,但 MySql 的一些有趣类型(如 Date 和 Time)可能会引起皱眉,而枚举作为一个字符串出现,我似乎记得。我记得的是前段时间的一个调查,是否将 MySQl 作为我们其中一个产品的后端,作为 sql server 的替代品。

您还可以使用索引访问结果的列

例如我的读者[0].

类上有很多方法,GetValues 返回一个基于当前行的对象数组。

这也能派上用场

if (myReader.Read())
{
   StringBuilder sb = new StringBuilder(myReader.FieldCount);
   for(int i = 0; i<myReader.FieldCount; i++)
   {
      sb.AppendLine(myReader.GetName(i);
   }
   Console.Write(sb.ToString());   
}

关于c# - 如何使用 MySqlDataReader 从数据库中检索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320425/

相关文章:

mysql - 按值对行求和并删除 Mysql 中的重复行

c# - 将 PowerShell 包添加到 .netstandard2.0 类库

c# - 为什么 SelectionChanged 会从 ComboBox 冒泡到父 TabControl?

c# - 使用 Awesomium 捕获网络错误

c# - 找到一个值正下方的 float

MYSQL 访问被拒绝用户 'root' @'localhost'

c# - 比较元组,忽略元素的顺序

c# - .NET 字典与类属性

c# - 'HttpClientHandler' 不包含 'ClientCertificates' 在 net461 和 net47 中的定义?

java - 如何使用原始 SQL 查询在 Moqui 中查找实体?