简体   繁体   English

无法使用 SqlDataReader c# 中的 GetSqlValues 方法

[英]Cannot use GetSqlValues Method from SqlDataReader c#

I make post method to select data from sql server, it works but i cant return all the data that i select and only can get one data我使用 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);
            }       
        }

As you can see above i use getstring to return the data and that's make i only get one specified column , in here i want return all column that i get from the query, so i look all method that available from SQL Data Reader and found GetSqlValues that will fill an array of object that contains the value from for all column in the record, but i am struggling to make it works.正如你在上面看到的,我使用getstring来返回数据,这让我只得到一个指定的列,在这里我想返回我从查询中得到的所有列,所以我查看了 SQL 数据阅读器中可用的所有方法并找到了GetSqlValues这将填充一个对象数组,其中包含记录中所有列的值,但我正在努力使其工作。

I already tried return reader.GetSqlValues(Data);我已经尝试过return reader.GetSqlValues(Data); But it shows error message cant convert to object.但它显示错误消息无法转换为对象。 Can anyone help me here i need to return all column here任何人都可以在这里帮助我,我需要在这里返回所有列

You can do it like below :你可以这样做:

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;

If you know the column name to show, then you can use it :如果您知道要显示的列名,则可以使用它:

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

To return all columns and all rows returned from the query.返回从查询返回的所有列和所有行。

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)));    
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM