Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataReader不返回值?_C#_Mysql - Fatal编程技术网

C# DataReader不返回值?

C# DataReader不返回值?,c#,mysql,C#,Mysql,我用C语言编写了一个程序,希望从MySQL数据库中获取一个值 我的代码是: MySqlCommand queryReqYear = new MySqlCommand(@"SELECT req_year FROM subjects_offered WHERE subj_code= @subj", connectToDB.connection); queryReqYear.Parameters.AddWithValue("@subj"

我用C语言编写了一个程序,希望从MySQL数据库中获取一个值

我的代码是:

MySqlCommand queryReqYear =
      new MySqlCommand(@"SELECT req_year FROM subjects_offered
                         WHERE subj_code= @subj", connectToDB.connection);


queryReqYear.Parameters.AddWithValue("@subj", viewStudents_subj.SelectedValue);
然后我使用DataReader

MySqlDataReader reader;
reader = queryReqYear.ExecuteReader();
然后我尝试获取值:

while (reader.Read())
    { MessageBox.Show(reader.GetString(0)); }
我试图获取的字段的值为3。我试图显示该值,但当我执行事件时,什么也没有发生

编辑


好的,我通过将
SelectedValue
更改为
SelectedItem

尝试在sql语句中的blah周围加上单引号来解决这个问题

MySqlCommand queryReqYear =
  new MySqlCommand(@"SELECT req_year FROM subjects_offered
                     WHERE subj_code= 'blah'", connectToDB.connection);

你没有得到任何例外,只是没有结果

您可能需要将其放入变量中进行测试,然后进行代码中断,例如:

string testValue = reader.GetString(0);
Console.WriteLine(testValue);

此外,您应该在SQL客户机中测试SQL代码,以查看是否在那里得到正确的结果。我怀疑问题出在您的SQL上,而不是c代码。

请尝试
Text
属性:

queryReqYear.Parameters.AddWithValue("@subj", viewStudents_subj.Text);

好的,我通过将
SelectedValue
更改为
SelectedItem

解决了这个问题。如果什么都没有发生,reader.Read()可能会返回false,因为结果集为空。您在哪里设置
@sub
的值?你把它设置成什么?那是用户输入的。queryReqYear.Parameters.AddWithValue(“@subc”,viewStudents\u subc.SelectedValue);我可以向您保证,我查询的字段不是空的。它的值为3。
reader.Read()
是否返回
true
false
?如果返回
false
,则查询不会返回任何记录。另外,我没有说字段是空的,我说的是结果集是空的。在HeidiSQL中运行语句(包括“blah”)时会发生什么?你能发布整个过程的代码吗?因为我们无法自动确定错误是否来自该行。它可能在连接上,或者您的sqlcommand没有足够的值。编辑:如果我这样做,它会工作。但是当使用Parameters.AddWithValue时,结果是空的。如果我直接在WHERE subc_code上输入一个值,就会得到结果。但是当我使用Parameters.AddWithValue时,它返回空。