首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExecuteScalar专用柱

ExecuteScalar专用柱
EN

Stack Overflow用户
提问于 2014-10-20 01:48:31
回答 2查看 1.4K关注 0票数 0

我的计划表有15个字段,使用ExecuteScalar似乎只获取第一列的结果,如何指定我想要的列名?例如,当我运行下面的代码时,它将返回1,这是ID列中的值,但我需要plan_rate列。

代码语言:javascript
复制
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CustomerDataConnectionString"].ConnectionString))
{
   conn.Open();

    SqlCommand cmd = new SqlCommand("SELECT * FROM [dbo].[plans] WHERE age_group = @age_group AND coverage_type = @coverage_type", conn);
    cmd.Parameters.AddWithValue("@age_group", dd_ageGroup.Text);
    cmd.Parameters.AddWithValue("@coverage_type", dd_coverageType.Text);

    Object result = cmd.ExecuteScalar();

    if (result != null)
        Label1.Text = "Plan rate: $" + result.ToString();

    else
        Label1.Text = "Plan is not available in this state.";


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-20 01:52:48

文献资料的第一行

执行查询,并返回查询返回的结果集中第一行的第一列。忽略其他列或行。

如果只想使用plan_rate,可以将查询更改为:

"SELECT plan_rate FROM [dbo].[plans]...

或者使用ExecuteReader并从DataReader中读取所需的列。

代码语言:javascript
复制
using(DataReader reader = cmd.ExecuteReader())
{
    while(reader.Read())
    {
        ...
        string plan_rate = reader["plan_rate"].ToString();
        ...
    }
}
票数 2
EN

Stack Overflow用户

发布于 2014-10-20 01:49:45

只有当返回一个值时,才能使用ExecuteScaler。这意味着您的查询只需要一个列和一行。

因此,您需要用一个Select * from来更改您的Select myColumn from

如果您需要第二次最快的执行并返回多个列,则可以使用ExecuteReader

代码语言:javascript
复制
SqlDataReader reader = command.ExecuteReader();
while (reader.Read()){
   Console.WriteLine(String.Format("{0}", reader[0]));//reader[0] column1, reader[1] column2,..
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26457479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档