数据库访问搜索文本框

时间:2013-03-09 17:14:04

标签: c# winforms ms-access-2007 ms-access-2003

StudentID > Number

StudentName > Text

StudentCNIC > Text

StudentDOB > Date/Time

我正在尝试创建一个搜索文本框,其中的结果显示在文本框中。我有一个名为一个按钮,称之为FindBtn,用户输入StudentID,学生姓名或学生CNCI(只是疼痛数字)。然后结果显示在文本框中...... StudIDTb(显示学生ID),StudNameTb(显示学生姓名),StudCNCITb(显示学生CNCI)和StudDOBTb(显示学生DOB)。

我在互联网上看到的很多例子都使用gridview,但我使用的是文本框来显示结果。我感兴趣的是......

here here herehere

    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冻结中显然是错误的。请有人在这里帮助我,提前谢谢。

更新1 我已经在字符串变量之前包含OleDbCommand,CommandType和打开连接,这可以防止屏幕冻结,但是它不能解决问题

更新2 找到我喜欢的东西,但它不起作用 Here

更新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();

我在修改格式化后收到错误....

“Microsoft Jet数据库引擎无法找到输入表或查询  'Students101'。确保它存在并且其名称拼写正确“。

我现在正在研究它是什么意思

1 个答案:

答案 0 :(得分: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();