我有一个表,其中有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); } } }
现在,您可以使用以下语法在List中使用任何问题
string aQuestion = listOfQuestionsAndAnswers[0].Question; string anAnswer = listOfQuestionsAndAnswers[0].Answer;
最后,我真的建议你花一点时间学习如何使用Dapper,如Gravell先生的回答所示.