C# C和SQL数据复制

C# C和SQL数据复制,c#,sql-server,C#,Sql Server,我有一些代码,可以从SQL server中提取信息并显示有关汽车的信息 问题在于,数据是显示的,但却是重复的。SQL数据没有重复,但列表框显示相同的数据两次 代码如下: private void Show_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection("Data Source=XXXX"); DataTable dt = new

我有一些代码,可以从SQL server中提取信息并显示有关汽车的信息

问题在于,数据是显示的,但却是重复的。SQL数据没有重复,但列表框显示相同的数据两次

代码如下:

private void Show_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Data Source=XXXX");
            DataTable dt = new DataTable();
            SqlDataAdapter SDA = new SqlDataAdapter("SELECT Number_Plate,Registered_Keeper,Make,Model,Year_Of_Make,Colour,Engine_Size,Transmission,Fuel_Type FROM datatable WHERE Number_Plate like '%" + label1.Text + "%'", conn);
            SDA.Fill(dt);
            if (SDA.Fill(dt) == 0)
            {

                button5.Visible = false;
                button4.Visible = true;
                label11.Visible = true;
                Show.Visible = false;
                button3.Visible = true;
                Make.Visible = false;
                Model.Visible = false;
                Year_Of_Make.Visible = false;
                Colour.Visible = false;
                Engine_Size.Visible = false;
                Transmission.Visible = false;
                Fuel_Type.Visible = false;
                Registered_Keeper.Visible = false;
                Plate.Visible = false;
                label2.Visible = false;
                label3.Visible = false;
                label4.Visible = false;
                label5.Visible = false;
                label6.Visible = false;
                label7.Visible = false;
                label8.Visible = false;
                label9.Visible = false;
                label12.Visible = false;
            }
            else
            {
                Plate.DataSource = dt;
                Plate.DisplayMember = "Number_Plate";

                Make.DataSource = dt;
                Make.DisplayMember = "Make";

                Model.DataSource = dt;
                Model.DisplayMember = "Model";

                Year_Of_Make.DataSource = dt;
                Year_Of_Make.DisplayMember = "Year_Of_Make";

                Colour.DataSource = dt;
                Colour.DisplayMember = "Colour";

                Engine_Size.DataSource = dt;
                Engine_Size.DisplayMember = "Engine_Size";

                Transmission.DataSource = dt;
                Transmission.DisplayMember = "Transmission";

                Fuel_Type.DataSource = dt;
                Fuel_Type.DisplayMember = "Fuel_Type";

                Registered_Keeper.DataSource = dt;
                Registered_Keeper.DisplayMember = "RegIstered_Keeper";

                Show.Visible = false;
                button3.Visible = true;
            }

        }
注意:当我在SQL中添加数据时,主键缺少大约20个数字,因此我的数据是20辆车,但当我添加新的数据时,主键大约是50辆。

好的,您需要执行两次SDA.Filldt。尝试在if之前删除线路上的一个

...
SqlDataAdapter SDA = ...
if (SDA.Fill(dt) == 0)
...
嗯,你做了两次SDA,Filldt。尝试在if之前删除线路上的一个

...
SqlDataAdapter SDA = ...
if (SDA.Fill(dt) == 0)
...

您正在呼叫SDA.Filldt;两次,一次在if语句外部,一次在if语句内部,调用SDA.Filldt;两次,一次在if语句外部,一次在if语句内部,调用了2次SDA.Filldt,尝试将其更改为dt.count<1,调用了2次SDA.Filldt,尝试将其更改为dt.count<1

只是为了完整性-也可以将DataTable定义为具有主键,然后多次调用fill将更新该表,而不是追加新行。而且Sql注入:…其中编号为“%+label1.Text+%”。在两个帐户上都是正确的。为了完整起见,还可以将DataTable定义为具有主键,然后多次调用fill将更新该表,而不是追加新行。而且Sql注入:…其中编号为“%+label1.Text+%”。正确,在两个帐户上都正确。