我的计划表有15个字段,使用ExecuteScalar似乎只获取第一列的结果,如何指定我想要的列名?例如,当我运行下面的代码时,它将返回1,这是ID列中的值,但我需要plan_rate列。
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.";
}发布于 2014-10-20 01:52:48
文献资料的第一行
执行查询,并返回查询返回的结果集中第一行的第一列。忽略其他列或行。
如果只想使用plan_rate,可以将查询更改为:
"SELECT plan_rate FROM [dbo].[plans]...
或者使用ExecuteReader并从DataReader中读取所需的列。
using(DataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
...
string plan_rate = reader["plan_rate"].ToString();
...
}
}发布于 2014-10-20 01:49:45
只有当返回一个值时,才能使用ExecuteScaler。这意味着您的查询只需要一个列和一行。
因此,您需要用一个Select * from来更改您的Select myColumn from。
如果您需要第二次最快的执行并返回多个列,则可以使用ExecuteReader。
SqlDataReader reader = command.ExecuteReader();
while (reader.Read()){
Console.WriteLine(String.Format("{0}", reader[0]));//reader[0] column1, reader[1] column2,..
}https://stackoverflow.com/questions/26457479
复制相似问题