1

これをグーグルで検索したところ、私を助けてくれたいくつかの便利なサイトが見つかりましたが、何が問題なのか正確にはわかりません. データベースにデータが含まれています。ページの読み込み時にデータを表示でき、次と前のボタンでデータを並べ替えることができますが、検索ボタンが機能せず、名前を検索すると常に「行が見つかりません」というメッセージが表示されるという問題があります。これを行うためのより効率的な方法があると確信していますが、まだ調べていません。

ありがとう

これが私のコードです:

string searchFor = txtSearch.Text.Trim();
    int results = 0;

    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\AddressBook.mdb");

    conn.Open();
    DataSet ds = new DataSet();
    string cmd = "SELECT * FROM tblAddressBook";

    OleDbDataAdapter da = new OleDbDataAdapter(cmd, conn);
    da.Fill(ds, "Info");

    DataRow[] returedRows;
    DataRow dr;
    returedRows = ds.Tables.Select("LastName=' " + searchFor + " ' ");
    results = returedRows.Length;

    if (results > 0)
    {   
        dr = returedRows[0];
        txtFirstName.Text = dr["FirstName"].ToString();
        txtLastName.Text = dr["LastName"].ToString();
        txtEmail.Text = dr["Email"].ToString();
        txtPhone.Text = dr["PhoneNumber"].ToString();
    }
    else
    {
        lblReturned.Text = "No Rows Found";
    }

    //close the connection
    conn.Close();
4

1 に答える 1

1

あなたの.Select文字列は、検索語の最初と最後にスペースを追加しています。searchFor含まれている場合Thompson、あなたの声明は

.Select("LastName=' Thompson ' ")

そのため、先頭にスペースがない限り、一致するエントリはありません。また、ds.tblAddressBook何と関係があるのか​​ わからなかったので、代わりにこれを使用しました:

returedRows = ds.Tables["Info"].Select("LastName='" + searchFor + "'");

ここで、コードを微調整して、誰かがO'Connor.

于 2013-11-14T14:23:33.190 に答える