如何使用ExecuteScalar检索多个列?

我使用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返回第一行的第一列,因此您可以使用这样的技巧

 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 。

这是一个例子:

使用DataReader检索数据(ADO.NET)

或者,您可以使用DataAdapter :

从DataAdapter填充DataSet(ADO.NET)