Sku*_*nia 1 c# sql-server sqldatareader c#-4.0
我有一个表,其中有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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望将声明的变量返回为Question1- Question14和Answer1- Answer14.我该怎么做呢?
好吧,如果你想使用14个不同的名字,你可以为问题定义14个字符串变量,为答案定义14个字符串变量.但是,如果您拥有列表和其他收集课程,这是坦率的嘲笑.
例如
为您的问题/答案定义一个班级
public class QuestionAnswer
{
public string Question {get;set;}
public string Answer {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
然后修改你的代码来创建一个 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用以下语法在List中使用任何问题
string aQuestion = listOfQuestionsAndAnswers[0].Question;
string anAnswer = listOfQuestionsAndAnswers[0].Answer;
Run Code Online (Sandbox Code Playgroud)
最后,我真的建议你花一点时间学习如何使用Dapper,如Gravell先生的回答所示.
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |