0
StudentID > Number

StudentName > Text

StudentCNIC > Text

StudentDOB > Date/Time

結果がテキストボックスに表示される検索テキストボックスを作成しようとしています。ユーザーがStudentID、Student Name、またはStudent CNCI(痛みの番号のみ)のいずれかを入力するFindBtnという名前のボタンがあります。結果はテキストボックスに表示されます...StudIDTb(学生IDを表示)、StudNameTb(学生名を表示)、StudCNCITb(学生CNCIを表示)、StudDOBTb(学生DOBを表示)。

インターネットで見た多くの例ではgridviewを使用していますが、結果を表示するためにテキストボックスを使用しています。私が興味を持っているのは...

ここ ここ ここここ

    public Form1()
    {
        InitializeComponent();
        //Connection String for Access 2003. 
        myCon = new OleDbConnection(@" Provider=Microsoft.Jet.OLEDB.4.0;Data 
        Source=C....\StudDB.mdb ");
    }

    private void Form1_Load(object sender, EventArgs e)
    {

        this.studentsTableAdapter.Fill(this.studDBDataSet.Students);
    }

FindBtn関数で、次のことを実行しました。

    private void FindBtn_Click(object sender, EventArgs e)
    {
        string title = textBox1.Text.ToString();
        if (title != "")
        {
            string queryString = "SELECT * FROM Students + title;
            //I need help here
            StudIDTb.Text = queryString;
            StudNameTb.Text = queryString;
            StudCNCITb.Text = queryString;
            StudDOBTb.Text = queryString;
        }
        else
            MessageBox.Show("Please try again\nError: ");
    }

結果は...を示しています。

SELECT *
FROM Students 103

それらのテキストボックスとexeファイルのそれぞれでフリーズするので、明らかに間違っています。よろしくお願いします。

UPDATE 1 文字列変数の直前にOleDbCommand、CommandType、および接続を開くことを含めました。これにより、画面がフリーズするのを防ぎますが、問題は解決しません。

UPDATE 2 気に入ったものが見つかりましたが、 ここでは機能しません

アップデート3

C Sharp Cornerとして、親切にコードを提供してくれました。

 private void btnFind_Click(object sender, EventArgs e)
    {
        string title = textBox1.Text.ToString();
        string queryString = "SELECT * FROM Students" + title;
        OleDbCommand command = new OleDbCommand();
        command.CommandText = queryString;

        command.Connection = myCon;
        myCon.Open();

        OleDbDataReader dr = command.ExecuteReader();
        while (dr.Read())
        {
             StudIDTb.Text += String.Format("Student ID:                
             {0}\n",dr["StudID"].ToString());
            StudNameTb.Text += String.Format("StudentName ID: {0}\n", 
            dr["StudentName"].ToString());
            StudCNCITb.Text += String.Format("StudentCNIC: {0}\n", 
            dr["StudentCNIC"].ToString());
            StudDOBTb.Text += String.Format("StudentCNIC: {0}\n", 
            dr["StudentCNIC"].ToString());
        }
        myCon.Close();

フォーマットを修正した後、エラーが発生します。

「MicrosoftJetデータベースエンジンが入力テーブルまたはクエリ「Students101」を見つけることができません。存在し、名前のスペルが正しいことを確認してください。」

私はそれが何を意味するのかを知るために今それを見ています

4

1 に答える 1

2

動作するはずの例を次に示します(oledbcommand、commandtypeなどを含めた場合も、コードを更新して、変更内容を確認できるようにします)。

OleDbCommand command = new OleDbCommand();
command.CommandText = queryString;
command.Connection = myCon;
myCon.Open();
OleDbDataReader dr = command.ExecuteReader();
while(dr.Read())
{
   StudIDTb.Text += dr["StudID"].ToString();
   StudNameTb.Text += dr["StudName"].ToString();
   StudCNCITb.Text += dr["StudCNCI"].ToString();
   StudDOBTb.Text += dr["StudDOB"].ToString();
}
myCon.Close();
于 2013-03-09T18:52:29.707 に答える