C# 执行标量查询错误c

C# 执行标量查询错误c,c#,ado.net,C#,Ado.net,我无法执行标量查询。在=附近获取不正确语法的异常。问题是我想从表中访问性别,然后在数据读取器的帮助下更新另一个表 SqlConnection con1 = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Muneeb\Documents\Visual Studio 2012\Projects\Dwh_Class_Project\Dwh_Class_Project\Centralised_db.md

我无法执行标量查询。在=附近获取不正确语法的异常。问题是我想从表中访问性别,然后在数据读取器的帮助下更新另一个表

SqlConnection con1 = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Muneeb\Documents\Visual Studio 2012\Projects\Dwh_Class_Project\Dwh_Class_Project\Centralised_db.mdf;Integrated Security=True");
string gender_get; // get the gender from the database 
SqlCommand cmdgen = new SqlCommand();
cmdgen.CommandText = "select top 1 gender from name_lookupwhere name= 'ahmed'";

con1.Open();       
cmdgen.Connection = con1;
string g = ((string) cmdgen.ExecuteScalar());

MessageBox.Show("test" + g);
您缺少一个空格:name\u lookup此处应该是name\u lookup where

另外,请注意,您正在执行“选择前1名…”。。。返回一行,但使用ExecuteScalar运行查询,该查询要求返回单个值。

查询中缺少空格。 尝试:


应该这样做:

    using(SqlConnection con1= new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Muneeb\Documents\Visual Studio 2012\Projects\Dwh_Class_Project\Dwh_Class_Project\Centralised_db.mdf;Integrated Security=True"))
    {
        using(SqlCommand cmdgen = new SqlCommand("select top 1 gender from name_lookup where name= @name", con1))
         {
             cmdgen.AddWithValue("@name", "ahmed");

             string g = ((string) cmdgen.ExecuteScalar());

             MessageBox.Show("test" + g);
         }
    }

name_lookupwhere中缺少的空格仅仅是一个转录错误吗?投票结束因为太本地化了。他们正在查询select top 1 gender,这实际上是一个单一值=我删除了top1,但它仍然抛出异常;您可能返回更多行。ExecuteScalar需要一个标量值,顾名思义。@w0lf我认为他们遗漏了答案的第一部分……事实上,如果您选择了前1个字段,并且只选择了一个字段,则应该可以。非常感谢!我从查询运行程序粘贴了查询,因此where命令中出现了问题。现在正在工作。这是一个错误,因为我直接粘贴了查询,没有注意到where子句没有分开。
    using(SqlConnection con1= new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Muneeb\Documents\Visual Studio 2012\Projects\Dwh_Class_Project\Dwh_Class_Project\Centralised_db.mdf;Integrated Security=True"))
    {
        using(SqlCommand cmdgen = new SqlCommand("select top 1 gender from name_lookup where name= @name", con1))
         {
             cmdgen.AddWithValue("@name", "ahmed");

             string g = ((string) cmdgen.ExecuteScalar());

             MessageBox.Show("test" + g);
         }
    }