SQL 使用 SqlDataReader 转到 C#



>我有一个问题。我想从我的 SQL Server 数据库中获取数据。当代码运行时,第一行不会添加到我的数组列表中。所有其他行都已成功添加。在SQL Server中,查询工作正常,但在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());
}
}
}

您正在尝试以两种不同的方式遍历读取器 - 同时使用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());
}
}
}
}
}

(另外,如果您真的按照帖子的建议使用ArrayList,我肯定会敦促您开始使用通用集合,例如 在这种情况下List<string>

相关内容

  • 没有找到相关文章

最新更新