C# 无法从SqlDataReader c使用GetSqlValues方法
我使用post方法从sql server中选择数据,它可以工作,但我不能返回我选择的所有数据,只能获得一个数据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 = "";
[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