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);
}
}