我有一个表,其中有14行,我想返回以及将每个单元格声明为变量。这是我尝试过的:
using (SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["2012SSMS"].ConnectionString))
{
SqlCommand cmd1 = new SqlCommand(@"SELECT [Question], [Answer]
from [MyTable]", conn1);
conn1.Open();
using (SqlDataReader reader1 = cmd1.ExecuteReader())
{
while (reader1.HasRows)
{
reader1.GetName(0);
reader1.GetName(1);
while(reader1.Read())
{
string Question(1) = reader1.GetString(0); //errors here
string Answer(1) = reader1.GetString(1); //and here
}
reader1.NextResult();
}
}
}
我的希望是将声明的变量作为Question1
-Question14
和Answer1
-返回Answer14
。我该怎么做呢?
好吧,如果要使用14个不同的名称,则可以为问题定义14个字符串变量,为答案定义14个字符串变量。坦率地说,当您拥有列表和其他收集类时,这是荒谬的。
例如
为您的问题/答案定义课程
public class QuestionAnswer
{
public string Question {get;set;}
public string Answer {get;set;}
}
然后修改您的代码以创建一个 List<QuestionAnswer>
List<QuestionAnswer> listOfQuestionsAndAnswers = new List<QuestionAnswer>();
using (SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["2012SSMS"].ConnectionString))
{
SqlCommand cmd1 = new SqlCommand(@"SELECT [Question], [Answer]
from [MyTable]", conn1);
conn1.Open();
using (SqlDataReader reader1 = cmd1.ExecuteReader())
{
while(reader1.Read())
{
QuestionAnswer qa = new QuestionAnswer();
qa.Question = reader1.GetString(0);
qa.Answer = reader1.GetString(1);
listOfQuestionsAndAnswers.Add(qa);
}
}
}
现在,您可以使用以下语法在列表中使用任何问题
string aQuestion = listOfQuestionsAndAnswers[0].Question;
string anAnswer = listOfQuestionsAndAnswers[0].Answer;
最后,我真的建议您花些时间学习如何使用Dapper,如Gravell先生的回答所示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句