繁体   English   中英

c# LINQ 在数据读取器中查找值

[英]c# LINQ find value in datareader

这是我在 MySQL 数据库上的表:

+----------+--------+---------+
| UserName | Region | UsercIX |
+----------+--------+---------+
| a123456  | X410   | NULL    |
| a123456  | X420   |       1 |
| a123456  | X430   | NULL    |
| a123456  | X440   |       1 |
+----------+--------+---------+

用户a123456X420X440区域(UsercIX=1)启用了写入,对X410X430区域 ( UsercIX=NULL ) 启用了读取。

我需要在此表中找到 - 通过LINQ或您的建议 - 只有在UsercIX列中的值等于 1,因为DataReader会提取列的第一个值,即 null。

请你帮帮我?

我的代码如下

using (OdbcDataReader reader = command.ExecuteReader())
{
    if (reader.HasRows)
    {
        while (reader.Read())
        {
           int UsercIX = Convert.ToInt32(reader["UsercIX"]);  //IS NULL
        }
    }
}

编辑#01

using (OdbcDataReader reader = command.ExecuteReader())
{
    if (reader.HasRows)
    {
        while (reader.Read())
        {
            int UsercIX = reader.GetInt32(6);
        }
    }                            
}

我可以建议对值进行尝试解析吗?

     int number;

     bool success = Int32.TryParse((reader["UsercIX"], out number);
     if (success)
     {
             // it worked, yay
     }
     else
     {
             // 😥
     }

我认为您应该以这种方式访问这些值:

**SqlDataReader** reader = command.ExecuteReader();

int UsercIX = reader.GetInt32(2);

在while循环中。 列以 0 开头

最终,在访问 Null 值时会出现错误,然后使用 try() {} catch() {} 结构来避免这种情况。 - 希望这可以帮助!

这是 mysql 的完整示例;

public void CreateMySqlDataReader(string mySelectQuery, MySqlConnection myConnection)
{
MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection);
myConnection.Open();
MMySqlDataReader myReader;
myReader = myCommand.ExecuteReader();
try
{
while(myReader.Read())
{
Console.WriteLine(myReader.GetString(0));
}
}
finally
{
myReader.Close();
myConnection.Close();
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM