SQL 使用 SqlDataReader 学习 C#
SQL get to C# with SqlDataReader
我有问题。我想从我的 SQL 服务器数据库中获取数据。当代码为 运行 时,第一行未添加到我的数组列表中。所有其他行都已成功添加。在 SQL 服务器中,查询工作正常,但在 VS 中,它不起作用。
private void button1_Click(object sender, EventArgs e)
{
SqlConnection baglanti = new SqlConnection("server=.; Initial Catalog=TripData;Integrated Security=SSPI");
baglanti.Open();
SqlCommand komut = new SqlCommand();
komut.CommandText = "select top 50 trip_ID from Sayfa1$";
komut.Connection = baglanti;
komut.ExecuteNonQuery();
SqlDataReader oku = komut.ExecuteReader();
while (oku.Read())
{
foreach (var item in oku)
{
gecici.Add(oku["trip_ID"].ToString());
}
}
}
您正在尝试以两种不同的方式迭代 reader - 使用 foreach
循环 和 使用 while (reader.Read())
。你应该做一个或另一个 - 我个人看到使用 while (reader.Read())
的代码比 foreach
方法更多。
此外,我建议在代码中对一次性对象使用 using
语句,而不是先调用 ExecuteNonQuery
。 (目前尚不清楚您为什么要这样做)。所以你可以写:
// Note that this looks like a mixture of UI and non-UI code; consider separating
// them for greater code reuse, separation of concerns etc.
private void button1_Click(object sender, EventArgs e)
{
// Declare connectionString elsewhere, or have a common method to open the connection.
// You're likely to need that in multiple places.
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var command = new SqlCommand("select top 50 trip_ID from Sayfa1$", connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
gecici.Add(oku["trip_ID"].ToString());
}
}
}
}
}
(此外,如果您 真的 按照您的 post 建议使用 ArrayList
,我强烈建议您开始使用通用集合,例如本例中的 List<string>
。)
我有问题。我想从我的 SQL 服务器数据库中获取数据。当代码为 运行 时,第一行未添加到我的数组列表中。所有其他行都已成功添加。在 SQL 服务器中,查询工作正常,但在 VS 中,它不起作用。
private void button1_Click(object sender, EventArgs e)
{
SqlConnection baglanti = new SqlConnection("server=.; Initial Catalog=TripData;Integrated Security=SSPI");
baglanti.Open();
SqlCommand komut = new SqlCommand();
komut.CommandText = "select top 50 trip_ID from Sayfa1$";
komut.Connection = baglanti;
komut.ExecuteNonQuery();
SqlDataReader oku = komut.ExecuteReader();
while (oku.Read())
{
foreach (var item in oku)
{
gecici.Add(oku["trip_ID"].ToString());
}
}
}
您正在尝试以两种不同的方式迭代 reader - 使用 foreach
循环 和 使用 while (reader.Read())
。你应该做一个或另一个 - 我个人看到使用 while (reader.Read())
的代码比 foreach
方法更多。
此外,我建议在代码中对一次性对象使用 using
语句,而不是先调用 ExecuteNonQuery
。 (目前尚不清楚您为什么要这样做)。所以你可以写:
// Note that this looks like a mixture of UI and non-UI code; consider separating
// them for greater code reuse, separation of concerns etc.
private void button1_Click(object sender, EventArgs e)
{
// Declare connectionString elsewhere, or have a common method to open the connection.
// You're likely to need that in multiple places.
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var command = new SqlCommand("select top 50 trip_ID from Sayfa1$", connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
gecici.Add(oku["trip_ID"].ToString());
}
}
}
}
}
(此外,如果您 真的 按照您的 post 建议使用 ArrayList
,我强烈建议您开始使用通用集合,例如本例中的 List<string>
。)