c# LINQ 在 datareader 中查找值
c# LINQ find value in datareader
这是我在 MySQL 数据库上的 table :
+----------+--------+---------+
| UserName | Region | UsercIX |
+----------+--------+---------+
| a123456 | X410 | NULL |
| a123456 | X420 | 1 |
| a123456 | X430 | NULL |
| a123456 | X440 | 1 |
+----------+--------+---------+
用户 a123456 对 X420 和 X440 区域 启用写入](UsercIX=1) 并读取 X410 和 X430 区域 (UsercIX=NULL).
我需要在这个 table 中找到 - 通过 LINQ 或你的建议 - 在列 UsercIX[=36 中只有等于 1 的值=],因为 DataReader 提取列的第一个值为空的值。
请你帮帮我?
下面是我的代码
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);
}
}
}
我认为您应该以这种方式访问这些值:
**SqlDataReader** reader = command.ExecuteReader();
int UsercIX = reader.GetInt32(2);
在 while 循环中。
列以 0
开头
最终您 运行 在访问空值时出错,然后使用 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();
}
}
我可以建议尝试解析该值吗?
int number;
bool success = Int32.TryParse((reader["UsercIX"], out number);
if (success)
{
// it worked, yay
}
else
{
//
}
这是我在 MySQL 数据库上的 table :
+----------+--------+---------+
| UserName | Region | UsercIX |
+----------+--------+---------+
| a123456 | X410 | NULL |
| a123456 | X420 | 1 |
| a123456 | X430 | NULL |
| a123456 | X440 | 1 |
+----------+--------+---------+
用户 a123456 对 X420 和 X440 区域 启用写入](UsercIX=1) 并读取 X410 和 X430 区域 (UsercIX=NULL).
我需要在这个 table 中找到 - 通过 LINQ 或你的建议 - 在列 UsercIX[=36 中只有等于 1 的值=],因为 DataReader 提取列的第一个值为空的值。
请你帮帮我?
下面是我的代码
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);
}
}
}
我认为您应该以这种方式访问这些值:
**SqlDataReader** reader = command.ExecuteReader();
int UsercIX = reader.GetInt32(2);
在 while 循环中。 列以 0
开头最终您 运行 在访问空值时出错,然后使用 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();
}
}
我可以建议尝试解析该值吗?
int number;
bool success = Int32.TryParse((reader["UsercIX"], out number);
if (success)
{
// it worked, yay
}
else
{
//
}