1

コードが選択されたときにデータベースからデータを取得するにはどうすればよいですか? 例: 私のデータベースでは、Code 列と Description 列があり、Code 列には "0001" があり、Description 列には "Abc" があります。つまり、"0001" の説明と言えます。 「アブ」です。

私はすでに何度も試しましたが、失敗し続けています。誰か方法を知っていますか? ユーザーが「0001」を選択したときにやりたいこと、説明欄に「Abc」が出てくる

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

string connectionString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\Archives\Projects\Program\Sell System\Sell System\App_Data\db1.accdb;Persist Security Info=False;");
int y = 16;

UpdateTextPosition();
OleDbDataReader dReader;
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT [Code] FROM [Data] WHERE Code='@Code'", conn);
cmd.Parameters.Add(new OleDbParameter("@Code", OleDbType.VarChar, 200, "Code"));
cmd.Parameters["@Code"].Value = textBoxCodeContainer[0][y].Text;

dReader = cmd.ExecuteReader();

AutoCompleteStringCollection codesCollection = new AutoCompleteStringCollection();

while (dReader.Read())
{
    string numString = dReader[0].ToString().PadLeft(4, '0');
    codesCollection.Add(numString);
}

dReader.Close();
conn.Close();

ここに画像のリンクがあります: https://www.dropbox.com/s/5q8pyztqy7ejupy/Capture.PNG (この画像はプログラムに接続されたデータベースです)

https: /

ここに私の問題があります: コードが Untitled_2.png に表示されているように選択されている場合、「0001」の説明 (Untitled_2.png に表示) に「0001」の説明が表示されます。これは「A」を参照してください。データベース、Capture.PNG)

4

2 に答える 2

2

説明がコードを読み取るテーブルの列であると仮定すると、クエリによって取得されるフィールドのリストにその列を追加することが必須です

OleDbDataReader dReader;
string cmdText="SELECT [Code], [Description] FROM [Data] WHERE Code=@Code"
using(OleDbConnection conn = new OleDbConnection(connectionString))
using(OleDbCommand cmd = new OleDbCommand(cmdText, conn))
{
    conn.Open();
    cmd.Parameters.Add(new OleDbParameter("@Code", OleDbType.VarChar, 200, "Code"));
    cmd.Parameters["@Code"].Value = textBoxCodeContainer[0][y].Text;
    using(OleDbDFataReader dReader = cmd.ExecuteReader())
    {
        AutoCompleteStringCollection codesCollection = new AutoCompleteStringCollection();
        while (dReader.Read())
        {
            string numString = dReader[1].ToString());
            codesCollection.Add(numString);
        }
    }
}

@Code パラメータを一重引用符で囲むコマンド テキストも修正しました。パラメータを構築するときにデータ型をすでに指定しているため、これらは必要ありません。
使い捨てオブジェクトを囲む using ステートメントにも注意してください。このようにして、例外が発生した場合でも、フレームワークによって正しく閉じられ、破棄されます。

于 2013-08-15T10:15:04.020 に答える