0

過去に、SQL を含むデータベース関連の作業を少し行ったことがあります (ただし、それらがどのようなバリエーションであったかはわかりません)。そのうちの 1 つに、'occnum' キーワードまたは類似のキーワードがあり、一意のフィールドを持たないテーブル内の行をインデックスでアドレス指定できるようになったと確信しています。

私の現在の状況では、数年後、まったく別の職場になりましたが、会社固有の Access データベースを編集できるようにする C# アプリケーションの作成に直面しています。このデータベースには主キーがないため、特定の行を編集するための同様の「出現番号」機能を見つけようとしましたが、何も見つかりませんでした。データベース構造を変更することはできず、どのフィールドも一意ではありません。

例として、次のように OleDbDataAdapter を使用していくつかの行をクエリします。

        List<string> result = new List<string>();

        DataSet dataSet = new DataSet();
        OleDbDataAdapter oleDBA = new OleDbDataAdapter(new OleDbCommand("SELECT " + FIELDNAME_ITEMDATA_TAG + " FROM " + TABLENAME_ITEMDATA + " WHERE " + FIELDNAME_ITEMDATA_AREANUMBER + " = " + Area.ToString(), oleDbConnection));
        oleDBA.Fill(dataSet, "ResourceString");

        foreach (DataRow dr in dataSet.Tables[0].Rows)
        {
            result.Add(dr.ItemArray[0].ToString());
        }

次に、文字列リストを使用して ListBox を設定します。リスト ボックスのエントリが入力されたら、次のような出現番号で個々の行をクエリできるようにしたいと思います。

"SELECT " + FIELDNAME_ITEMDATA_TAG + " FROM " + TABLENAME_ITEMDATA + " WHERE " + FIELDNAME_ITEMDATA_AREANUMBER + " = " + Area.ToString(), oleDbConnection AND OCCNUM = " + OccNum

これは実行可能ですか?正しいキーワードを見つけられなかったのでしょうか?

4

1 に答える 1

0

occnumは Oracle データベースの機能であり、Access からはアクセスできません。

とはいえ、IIRC、Access には組み込みの主キーの概念がありません (これは本当に必要なものです)。自分で追加する必要があります。

つまり、主キーをテーブルに追加してから、ルーチンで主キーとタグ名の両方を選択する必要があります (クエリをオンザ上記のように飛ぶ)、より多くの情報を取得したい場合は、主キーでクエリを実行します。

また、各テーブルの自然キーが何であるかを把握し、その上に一意のインデックスがあることを確認する必要があります (または、必要に応じて、その列を主キーにすることもできますが、お勧めしません)。 .

最後に、代理キーである主キーを作成する場合、それを自動インクリメント列にすることができるため、新しい値を挿入するときにキーの生成について心配する必要はありません。

于 2012-09-26T16:03:28.480 に答える