数据库中获取数据始终显示第一个记录

发布于 2025-01-24 16:23:15 字数 1276 浏览 2 评论 0原文

当我在搜索框中搜索不同的建筑号码时,它总是在表中显示第一个记录。 当我尝试使用分化的建筑号码时,它确实显示了它始终保持表格的第一条记录。

任何人都可以纠正我的代码吗?谢谢。

        private void button3_Click(object sender, EventArgs e)
    {
 
    
        OleDbConnection con2 = new OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Users\test\TDB.accdb");

        try
          {

            con2.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con2;
            string query = "select * from TestDatabase where Building_No='" + textBox1.Text + "'";
            cmd.CommandText = query;
            cmd.Parameters.AddWithValue("@Building_No", textBox1.Text);
            cmd.Parameters.AddWithValue("@Building_Name", textBox4.Text);
            cmd.Parameters.AddWithValue("@Year_", textBox2.Text);



            OleDbDataReader reader = cmd.ExecuteReader();
           if (reader.Read())
            {
       
                textBox4.Text = reader["Building_Name"].ToString();
                textBox2.Text = reader["Year_"].ToString();
           



            }
     
        }
          catch (Exception)
        {
            MessageBox.Show("No Reference # found!", "Error");
            textBox4.Clear();
            textBox2.Clear();
        }
    }

When i search differennt building number in search box it always display first record in the table.
When i tried diffrent building number it does now display it always stay first record of the table.

Can anybody correct my code. Thanks.

        private void button3_Click(object sender, EventArgs e)
    {
 
    
        OleDbConnection con2 = new OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Users\test\TDB.accdb");

        try
          {

            con2.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con2;
            string query = "select * from TestDatabase where Building_No='" + textBox1.Text + "'";
            cmd.CommandText = query;
            cmd.Parameters.AddWithValue("@Building_No", textBox1.Text);
            cmd.Parameters.AddWithValue("@Building_Name", textBox4.Text);
            cmd.Parameters.AddWithValue("@Year_", textBox2.Text);



            OleDbDataReader reader = cmd.ExecuteReader();
           if (reader.Read())
            {
       
                textBox4.Text = reader["Building_Name"].ToString();
                textBox2.Text = reader["Year_"].ToString();
           



            }
     
        }
          catch (Exception)
        {
            MessageBox.Show("No Reference # found!", "Error");
            textBox4.Clear();
            textBox2.Clear();
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

数理化全能战士 2025-01-31 16:23:15

如果“ oledbcommand.executereader”的结果是多行,

则必须调用oledbdatareader.read()多个。

例子:

while (reader.Read())
{
    Console.WriteLine(reader["Building_Name"].ToString());
}

e.g.

textBox4.Text = "";
while (reader.Read())
{
    textBox4.Text += reader["Building_Name"].ToString() + ",";
}

If the result of 'OleDbCommand.ExecuteReader' is multiple rows

You must call OleDbDataReader.Read() multiple.

example:

while (reader.Read())
{
    Console.WriteLine(reader["Building_Name"].ToString());
}

e.g.

textBox4.Text = "";
while (reader.Read())
{
    textBox4.Text += reader["Building_Name"].ToString() + ",";
}
失去的东西太少 2025-01-31 16:23:15

可能是因为您没有关闭连接。您可以尝试以下代码吗?

    private void button3_Click(object sender, EventArgs e)
{

    OleDbConnection con2 = new OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Users\test\TDB.accdb");

    try
    {

        con2.Open();
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = con2;
        string query = "select * from TestDatabase where Building_No='" + textBox1.Text + "'";
        cmd.CommandText = query;
        cmd.Parameters.AddWithValue("@Building_No", textBox1.Text);
        cmd.Parameters.AddWithValue("@Building_Name", textBox4.Text);
        cmd.Parameters.AddWithValue("@Year_", textBox2.Text);

        OleDbDataReader reader = cmd.ExecuteReader();
        if (reader.Read())
        {
            textBox4.Text = reader["Building_Name"].ToString();
            textBox2.Text = reader["Year_"].ToString();
        }
        reader.Close();
        cmd.Dispose();
        con2.Close();
 
    }
      catch (Exception)
    {
        MessageBox.Show("No Reference # found!", "Error");
        textBox4.Clear();
        textBox2.Clear();
    }
}

It could be because you didn't close the connections. Can you try the code below?

    private void button3_Click(object sender, EventArgs e)
{

    OleDbConnection con2 = new OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Users\test\TDB.accdb");

    try
    {

        con2.Open();
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = con2;
        string query = "select * from TestDatabase where Building_No='" + textBox1.Text + "'";
        cmd.CommandText = query;
        cmd.Parameters.AddWithValue("@Building_No", textBox1.Text);
        cmd.Parameters.AddWithValue("@Building_Name", textBox4.Text);
        cmd.Parameters.AddWithValue("@Year_", textBox2.Text);

        OleDbDataReader reader = cmd.ExecuteReader();
        if (reader.Read())
        {
            textBox4.Text = reader["Building_Name"].ToString();
            textBox2.Text = reader["Year_"].ToString();
        }
        reader.Close();
        cmd.Dispose();
        con2.Close();
 
    }
      catch (Exception)
    {
        MessageBox.Show("No Reference # found!", "Error");
        textBox4.Clear();
        textBox2.Clear();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文