我在使用SQLAdapter时遇到了一些问题。当运行以下代码时,我最终得到一个重复行的数据表。我无法弄清楚问题出在哪里。我已经用谷歌搜索了这个,几乎所有的帖子都涉及从sql 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]}
有两种方法可以从DataAdapter
填充DataTable
,您在这里都使用了:
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();