1

SQL サーバーから情報を取得し、車に関する情報を表示するコードがあります。

問題は、データが表示されているが重複していることです。SQL データには重複はありませんが、リスト ボックスには同じデータが 2 回表示されています。

コードは次のとおりです。

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 になります。

4

3 に答える 3

3

まあ、あなたはSDA.Fill(dt)2回行います。if の前の行を削除してみてください。

...
SqlDataAdapter SDA = ...
if (SDA.Fill(dt) == 0)
...
于 2013-03-19T21:05:11.853 に答える
1

SDA.Fill(dt)が2回呼び出されたので、dt.count<1に変更してみてください

于 2013-03-19T21:10:13.147 に答える
1

SDA.Fill(dt);if ステートメントの外側で 1 回、内側で 1 回、2 回呼び出しています。

于 2013-03-19T21:05:43.070 に答える