如何使用列表获取数据并 SQL 服务于 ASP.NET
How to get data using a list and SQL Serve in ASP.NET
我有一个 id 列表。这些是答案 ID。我在应用程序中持有一个列表。我只想向 SQL 服务器发出请求,以获得与 ID 匹配的答案。
我需要在 C# 中使用 foreach 循环吗?如何将结果合并到数据表或其他东西中?我需要一些帮助。
我想在 ASP.NET 项目中使用 C# 获取数据。
id 列表:<List>
:
answer_id
---------
5
4
23
2
45
16
我想使用 C# 并在数据表中显示:(预期结果)
answer_id answer
-------------------------------------
5 It's true
4 Maybe next time
23 Man this is crazy
2 Can i help you?
45 Wtf..
16 I can not believe..
如果匹配,我们的 select 查询必须 return 答案。在这个例子中,假设我们找到了所有答案。
简单查询一个结果:
SELECT answer_id, answer
FROM answers
WHERE answer_id = 5
结果:
answer_id answer
-----------------------
5 It's true
假设您正在使用 ADO.NET,您将需要创建一个 class 来保存 answer_id 的属性,然后回答。在我的示例中,我的行为就好像有一个名为 Answer 的 class 具有这些值。然后我开始创建一个 DataAccess class 像这样:
public static class DataAccess
{
private static string reportConnectionString = "Data Source=;Initial Catalog=;Persist Security Info=;User ID=;Password=";
public static class Answer
{
public int AnswerID {get; set;}
public string Answer {get; set;}
}
public static bool GetRecords(int AnswerId, out List<Answer> lstAnswers, out string sMessage)
{
lstAnswers = new List <Answer>();
AnswerID;
sMessage = "";
try
{
using(SqlConnection connection = new SqlConnection(reportConnectionString))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = System.Data.CommandType.Text;
command.Parameters.AddWithValue("@id", AnswerID);
command.CommandText = @"select answer_id, answer from answers where answer_id = @id";
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.HasRows == false)
{
sMessage = "Could not find data";
return false;
}
while(reader.Read())
{
Answer answer= new Answer();
answer.answer_id= reader.GetInt32(reader.GetOrdinal("answer_id"));
answer.answer= reader.GetValue(reader.GetOrdinal("answer")).ToString();
// -- Adding single object to list
lstAnswers.Add(log);
}
}
}
}
return true;
}
catch (Exception exc)
{
sMessage = exc.ToString();
return false;
}
}
}
如果您有一个 answer_id 的列表,您可以创建一个 foreach 循环来遍历列表并连接 answer_id 和要显示的答案。
foreach (var item in lstAnswers)
{
txtTextBox.Text = item.answer_id + " " + item.answer;
}
如果您使用的是 ADO.NET,则需要一些额外的步骤。
您需要使用扩展助手,因为添加列表作为参数是 ADO.NET 的限制之一,请参阅:
你可以做一个
foreach(int x in myAnswerIdList){
//execute a sqlCommand for every number in the list and save it into an array
}
但这确实是一种糟糕而丑陋的方法......
'easiest' 将使用 Entity Framework 的方式,因为您已经有了列表,他们存在许多方法来使用 EF 实现您正在寻找的东西。
我有一个 id 列表。这些是答案 ID。我在应用程序中持有一个列表。我只想向 SQL 服务器发出请求,以获得与 ID 匹配的答案。
我需要在 C# 中使用 foreach 循环吗?如何将结果合并到数据表或其他东西中?我需要一些帮助。
我想在 ASP.NET 项目中使用 C# 获取数据。
id 列表:<List>
:
answer_id
---------
5
4
23
2
45
16
我想使用 C# 并在数据表中显示:(预期结果)
answer_id answer
-------------------------------------
5 It's true
4 Maybe next time
23 Man this is crazy
2 Can i help you?
45 Wtf..
16 I can not believe..
如果匹配,我们的 select 查询必须 return 答案。在这个例子中,假设我们找到了所有答案。
简单查询一个结果:
SELECT answer_id, answer
FROM answers
WHERE answer_id = 5
结果:
answer_id answer
-----------------------
5 It's true
假设您正在使用 ADO.NET,您将需要创建一个 class 来保存 answer_id 的属性,然后回答。在我的示例中,我的行为就好像有一个名为 Answer 的 class 具有这些值。然后我开始创建一个 DataAccess class 像这样:
public static class DataAccess
{
private static string reportConnectionString = "Data Source=;Initial Catalog=;Persist Security Info=;User ID=;Password=";
public static class Answer
{
public int AnswerID {get; set;}
public string Answer {get; set;}
}
public static bool GetRecords(int AnswerId, out List<Answer> lstAnswers, out string sMessage)
{
lstAnswers = new List <Answer>();
AnswerID;
sMessage = "";
try
{
using(SqlConnection connection = new SqlConnection(reportConnectionString))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = System.Data.CommandType.Text;
command.Parameters.AddWithValue("@id", AnswerID);
command.CommandText = @"select answer_id, answer from answers where answer_id = @id";
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.HasRows == false)
{
sMessage = "Could not find data";
return false;
}
while(reader.Read())
{
Answer answer= new Answer();
answer.answer_id= reader.GetInt32(reader.GetOrdinal("answer_id"));
answer.answer= reader.GetValue(reader.GetOrdinal("answer")).ToString();
// -- Adding single object to list
lstAnswers.Add(log);
}
}
}
}
return true;
}
catch (Exception exc)
{
sMessage = exc.ToString();
return false;
}
}
}
如果您有一个 answer_id 的列表,您可以创建一个 foreach 循环来遍历列表并连接 answer_id 和要显示的答案。
foreach (var item in lstAnswers)
{
txtTextBox.Text = item.answer_id + " " + item.answer;
}
如果您使用的是 ADO.NET,则需要一些额外的步骤。
您需要使用扩展助手,因为添加列表作为参数是 ADO.NET 的限制之一,请参阅:
你可以做一个
foreach(int x in myAnswerIdList){
//execute a sqlCommand for every number in the list and save it into an array
}
但这确实是一种糟糕而丑陋的方法...... 'easiest' 将使用 Entity Framework 的方式,因为您已经有了列表,他们存在许多方法来使用 EF 实现您正在寻找的东西。