SQLDataAdapter дублирует данные

У меня есть некоторые проблемы с SQLAdapter. Когда я запускаю следующий код, я получаю набор дублированных строк. Я не могу понять, где проблема. Я пользуюсь этим, и почти все сообщения касаются удаления дублированных данных, когда они читаются из БД sql. В моей таблице БД 4 записи. Невозможно, чтобы там были дублированные данные.

using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;


public partial class Vehicles : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        LoadResources();
        VehicleScheduler1.StartDate = new DateTime(DateTime.Today.Year, 1, 1);
        VehicleScheduler1.DataBind();
    }

}

public string GetConnectionString()
{
    return System.Configuration.ConfigurationManager.ConnectionStrings["DayPilot"].ConnectionString;
}

private void LoadResources()
{
    VehicleScheduler1.Resources.Clear();
    string sql = "SELECT [id], [name] FROM [vehicles]";
    using (SqlConnection conn = new SqlConnection(GetConnectionString()))
    using (SqlCommand cmd = new SqlCommand(sql, conn))

    {
        conn.Open();
         SqlDataAdapter da = new SqlDataAdapter(cmd);
          DataTable dt = new DataTable();
          dt.Load(cmd.ExecuteReader());
          da.Fill(dt);

        foreach (DataRow r in dt.Rows)
        {
            string name = (string)r["name"];
            string id = Convert.ToString(r["id"]);

            VehicleScheduler1.Resources.Add(name, id);
            conn.Close();
        }

    }
}

[EndResult][1]}

2 ответа

Есть два способа заполнить DataTable из DataAdapter Вы использовали оба здесь:

dt.Load(cmd.ExecuteReader());  // remove this one (my suggestion)
da.Fill(dt);                   // or this

Я обычно использую DataAdater.Fill(DataTable) Итак, ваш второй способ, опустите другой.

Может быть это будет полезно

           transformerDataTableBindingSource.Clear();
      DataGridTransfData.DataSource = null;
      this.DataGridTransfData.DataSource =this.transformerDataTableBindingSource;
      DataGridTransfData.Refresh();
      this.transfData.TransformerDataTable.Clear();
Другие вопросы по тегам