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();