如何在从SqlDataReader读取变量时定义变量(返回所有行)

 风雪漫天2702934714_713 发布于 2023-01-12 09:35

我有一个表,其中有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- Question14Answer1- Answer14.我该怎么做呢?

1 个回答
  • 好吧,如果你想使用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先生的回答所示.

    2023-01-12 09:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有