1

私は C# を使用して sql データベースを持つプログラムを作成しています。データベースには という名前のテーブルWorkersがあり、自動インクリメントと主キーがありますID_column。レコードを削除すると、ID 間にギャップが生じます。

レコードを削除した後、ID を並べ替えるにはどうすればよいですか?

アップデート

私がやろうとしているのは、レコードを見つけた後に画面に表示することですID.

更新 2

これは私が使用しようとしたコードです

private void btnFind_Click(object sender, EventArgs e)
    {
        string searchFor = "";
        string searchOn = "";
        string searchString = "";
        int results = 0;

        if (searchTextBox.Text.Trim() == "")
            MessageBox.Show("Nothing to search for");

        if (cb1.Text == "Last Name")
        {
            searchFor = searchTextBox.Text.Trim();
            searchOn = "last_Name=";
            searchString = searchOn + "'" + searchFor + "'";
        }

        if (cb1.Text == "Job Title")
        {
            searchFor = searchTextBox.Text.Trim();
            searchOn = "job_Title=";
            searchString = searchOn + "'" + searchFor + "'";
        }

        DataRow[] returnedRows;

        returnedRows = ds1.Tables["Workers"].Select(searchString);

        results = returnedRows.Length;

        if (results > 0)
        {
            DataRow dr1;

            dr1 = returnedRows[0];
            inc = (int)dr1["Worker_ID"]-1;

            NavigateRecords();

        }
        else
        {
            MessageBox.Show("No such Record");
        }

    }

incは現在表示されているレコードであり、指定されNavigateRecords()た番号のレコードを表示しますinc

void NavigateRecords()
    {
        DataRow dRow = ds1.Tables["Workers"].Rows[inc];

        textBox1.Text =  dRow.ItemArray.GetValue(1).ToString();
        textBox2.Text =  dRow.ItemArray.GetValue(2).ToString();
        textBox3.Text =  dRow.ItemArray.GetValue(3).ToString();
    }
4

4 に答える 4

6

通常、整合性の理由から、データベース内の ID を変更することはありません。

あなたの場合、表示上の理由からRow_Numberを使用することをお勧めします

データベースにギャップがあっても問題ありません。

于 2012-11-06T13:16:27.480 に答える
4

人々が死ぬとき、彼らは自分の SSN を「再注文」しますか?

何もしないでください、並べ替えないでください。

100 万人の従業員がいて、これに関連する 10 億の注文があった場合に発生する問題を想像してみてください。ここで、Worker no 1 を削除します。100 万のワーカー レコード ID だけでなく、ワーカーの ID を参照する 10 億のオーダー レコードも並べ替える必要があります。

あなたが持っている例外は、おそらく「欠落している」IDによるものではありません。

例外をスローしているコードと例外自体を投稿できますか?

于 2012-11-06T13:32:29.533 に答える
3

他のテーブルにこのIDの参照がある可能性があるため、IDを並べ替えないでください。
IDが変更可能であり、したがって重要ではない場合は、この列をまとめて削除できます。

于 2012-11-06T13:19:32.003 に答える
1

ID 列のシード値をリセットします。

ID 列の値を再シードする可能性があります

DBCC CHECKIDENT('Customer', RESEED, value)

こちらのリンクもぜひご覧ください

http://geekswithblogs.net/TakeNote/archive/2007/11/30/117258.aspx

于 2012-11-06T13:32:37.497 に答える