Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从SqlDataReader c使用GetSqlValues方法_C#_Asp.net_Sql Server - Fatal编程技术网

C# 无法从SqlDataReader c使用GetSqlValues方法

C# 无法从SqlDataReader c使用GetSqlValues方法,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我使用post方法从sql server中选择数据,它可以工作,但我不能返回我选择的所有数据,只能获得一个数据 [HttpPost] public Object SelectData([FromBody]DataEmployee employee) { DataEmployee Data = new DataEmployee(); string ConeectionString = "";

我使用post方法从sql server中选择数据,它可以工作,但我不能返回我选择的所有数据,只能获得一个数据

   [HttpPost]
        public Object SelectData([FromBody]DataEmployee employee)
        {
            DataEmployee Data = new DataEmployee();

            string ConeectionString = "";
            using (SqlConnection openCon = new SqlConnection(ConeectionString))
            {       
                openCon.Open();

                SqlCommand command = new SqlCommand("SELECT [ID],[FirstName] ,[LastName] ,[Gender] ,[Salary] FROM[dbo].[employeesData] WHERE[FirstName]= @zip", openCon);

                command.Parameters.AddWithValue("@zip", employee.FirstName );
                int result = command.ExecuteNonQuery();
                SqlDataReader reader = command.ExecuteReader();
                // result gives the -1 output.. but on insert its 1
                if (reader.HasRows)
                {
                    Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
                        reader.GetName(1));

                    if (reader.Read())
                    {
                       // Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
                         //   reader.GetString(1));

                    }
                    //    reader.NextResult();
                 //   return reader.GetString(3);   

                }
                else
                {
                    return "Data is Empty";
                }

                return reader.GetString(2);
            }       
        }
正如您在上面看到的,我使用getstring返回数据,这使得我只得到一个指定的列,在这里我想返回我从查询中得到的所有列,因此我查找SQL data Reader中可用的所有方法,并找到GetSqlValues,它将填充一个对象数组,该数组包含记录中所有列的值,但我正在努力让它发挥作用

我已经尝试了return reader.GetSqlValuesData;
但它显示错误消息无法转换为对象。这里有人能帮我吗我需要在这里返回所有列

以返回查询返回的所有列和所有行

int count = reader.FieldCount;
List<List<string>> data = new List<List<string>>();
while(reader.Read()) {
    data.Add(Enumerable.Range(0,count -1).Select(it => reader.GetValue(it)));    
}

您可以按如下方式进行操作:

string val="";
if (reader.HasRows)
{
    while (reader.Read())
    {
        val += "ID = " + reader[0].ToString() + "; Name = " + reader[1].ToString();
    }
}
else
{
    return "Data is Empty";
}

reader.Close();
return val;
如果您知道要显示的列名,则可以使用它:

while (reader.Read())
{
    Console.WriteLine("\t{0}\t{1}", reader["ColumnOneName"].ToString(),
    reader["ColumnTwoName"].ToString());
}

也许你现在想更改你的连接凭据…啊哈,我忘记隐藏我的数据了sqlconnection@TheodorusAgumGumilang我已经从历史上修改过了,但是你应该考虑密码妥协和改变。it@MarcGravell如果SO尝试分析文本并检测潜在的信息泄漏(如Password=)可能是一个好主意。没关系,它只包含虚拟数据,但感谢您的关注。我已经尝试过了,只得到了1列,或者我应该像这个读卡器一样使用它[Column1,Column2,Column3].ToString;?也不要使用这一行返回reader.GetString2;最后,在不使用reader的情况下返回一个值,并且不要忘记逐个读卡器关闭读卡器。关闭;我尝试像这样返回数据{ID:1,名:西奥多罗斯,姓:古米朗,性别:男,工资:1234},但我只返回1列,而且我已经尝试了您的答案,但仍然只得到1列如果此答案帮助您解决了问题,请不要忘记将此答案标记为usefulupvote并接受答案是的,我编辑您的源代码并获取数组列表并返回数据[3,Andreas,Waskito,Male,1234567890],您可以看到,当我尝试此列表时,没有名字、ID等,rawData=null;它显示错误消息无法从字符串转换为DataEmployee