如何使用ExecuteScalar检索多个列?

时间:2011-06-09 10:59:09

标签: 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 rodecustomer = cmd.ExecuteScalar();
 string username= cmd.ExecuteScalar();
 string password = cmd.ExecuteScalar();

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

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:1)

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];

答案 2 :(得分:0)

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

以下是一个例子:

Retrieving Data Using a DataReader (ADO.NET)

或者,您可以使用DataAdapter

Populating a DataSet from a DataAdapter (ADO.NET)