C# 如何使用ExecuteScalar检索多个列?

C# 如何使用ExecuteScalar检索多个列?,c#,C#,我使用ExecuteScalar得到一列: cmd.commandtext = "select rodeuser from customer_db_map"; string rodecustomer = cmd.executescalar; 但我需要获得多个列,例如: cmd.commandtext = "select rodeuser,username,password from customer_db_map"; 我需要字符串中的每一列: string rodecustom

我使用
ExecuteScalar
得到一列:

 cmd.commandtext = "select rodeuser from customer_db_map";
    string rodecustomer = cmd.executescalar;
但我需要获得多个列,例如:

 cmd.commandtext = "select rodeuser,username,password from customer_db_map";
我需要字符串中的每一列:

 string rodecustomer = cmd.ExecuteScalar();
 string username= cmd.ExecuteScalar();
 string password = cmd.ExecuteScalar();

但这是不可能的。这是如何实现的?

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


要实现这一点,您需要使用
SqlCommand.ExecuteReader
方法

使用
ExecuteScalar
命令无法获取多个值。您可能希望改用命令

以下是一个例子:

或者,您可以使用:


ExecuteScalar返回第一行的第一列,因此您可以使用如下技巧

var m = cmd.commandtext =    select str(rodeuser)+','+username+','+password  from 
    (select rodeuser,username,password from customer_db_map)

string[] result=m.ToString().Split(new char[] { ',' });
string rodeuser=result[0];

string username=result[1];

string password=result[2];

这不是
ExecuteScalar()
的用途。使用
ExecuteReader()
并从数据读取器中读取它们。如果要给基础提供程序机会优化单行查询,如果需要多个结果,ExecuteReader方法可以使用commandBehavior.SingleRow参数(),您应该使用ExecuteReader方法,正如Prakash Kalakoti在前面的答案中所写的那样。