我在使用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]}
答案 0 :(得分:2)
从DataTable
填充DataAdapter
有两种方法,您在这里使用过两种方法:
dt.Load(cmd.ExecuteReader()); // remove this one (my suggestion)
da.Fill(dt); // or this
我通常使用DataAdater.Fill(DataTable)
,所以你的第二种方式,省略另一种方式。