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
命令无法获取多个值。您可能希望改用命令
以下是一个例子:
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在前面的答案中所写的那样。