SQLDataAdapter复制数据

时间:2018-03-12 15:48:32

标签: c# sql sqldatareader sqldataadapter

我在使用SQLAdapter时遇到了一些问题。运行以下代码时,我最终会得到一个重复行的数据表。我无法弄清问题在哪里。我已经搞砸了这个,几乎所有关于删除重复数据的帖子都是从sql DB中读取的。我的db表中有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]}

1 个答案:

答案 0 :(得分:2)

DataTable填充DataAdapter有两种方法,您在这里使用过两种方法:

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

我通常使用DataAdater.Fill(DataTable),所以你的第二种方式,省略另一种方式。