如何使用ExecuteScalar检索多个列?

Roo*_*ney 3 c#

我正在使用以下列ExecuteScalar:

 cmd.commandtext = "select rodeuser from customer_db_map";
    string rodecustomer = cmd.executescalar;
Run Code Online (Sandbox Code Playgroud)

但我需要获得多个专栏,例如:

 cmd.commandtext = "select rodeuser,username,password from customer_db_map";
Run Code Online (Sandbox Code Playgroud)

我需要字符串中的每一列:

 string rodecustomer = cmd.ExecuteScalar();
 string username= cmd.ExecuteScalar();
 string password = cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

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

PSK*_*PSK 8

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

要做到这一点你需要使用SqlCommand.ExecuteReader方法

  • 如果要让基础提供程序有机会针对单个行优化查询,则ExecuteReader方法可以使用CommandBehaviour.SingleRow参数(http://msdn.microsoft.com/zh-cn/library/system.data。 commandbehavior.aspx) (2认同)

Dev*_*erX 5

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];
Run Code Online (Sandbox Code Playgroud)