[英]c# LINQ find value in datareader
这是我在 MySQL 数据库上的表:
+----------+--------+---------+
| UserName | Region | UsercIX |
+----------+--------+---------+
| a123456 | X410 | NULL |
| a123456 | X420 | 1 |
| a123456 | X430 | NULL |
| a123456 | X440 | 1 |
+----------+--------+---------+
用户a123456对X420和X440区域(UsercIX=1)启用了写入,对X410和X430区域 ( 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.