使用文本框和按钮在数据库中查找记录

本文关键字:数据库 查找记录 按钮 文本 | 更新日期: 2023-09-27 18:01:28

我一直在Home and Learn上学习如何设置数据库。目前,我正在学习如何在数据库中查找记录。我在试着得到我的GO!按钮搜索数据表中的成分,并且我完全遵循了教程,并且在Error列表中没有错误,但是这行代码:

returnRows = dataRecipe.Tables["CookBookRecipes"].Select("Ingredients = '" + searchOut + "'");

它停止我的程序,并显示以下消息:

对象引用未设置为an对象的实例。

我已经搜索了意义,我想这意味着我的returnRows变量是空的,但我不能确定。有人能帮我解决这个问题吗?

这是我的搜索按钮的完整代码:

System.Data.SqlClient.SqlConnection con;
System.Data.SqlClient.SqlDataAdapter dataAdapt;
DataSet dataRecipe;
private void btnSearch_Click(object sender, EventArgs e)
{
    if (tbSearch.TextLength >= 1)
   {
        MessageBox.Show("This will work when you put it a word!");
        // Search code //
        string searchOut = tbSearch.Text;
        int result = 0;
        DataRow[] returnRows;
        returnRows = dataRecipe.Tables["CookBookRecipes"].Select("Ingredients = '" + searchOut + "'");

        result = returnRows.Length;
        if (result > 0)
        {
            DataRow rowBack;
            rowBack = returnRows[0];
            MessageBox.Show(rowBack[3].ToString());
        }
        else
        {
            MessageBox.Show("No such record");
        }
   }
   else
    {
       MessageBox.Show("Please enter an ingredient to search for!", "Search");
   }
}
下面是我的表单的完整代码:
using System; 
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Cookbook {
    public partial class BrowseIngredients : Form {
       public BrowseIngredients() { InitializeComponent(); }
       private void exitToolStripMenuItem_Click(object sender, EventArgs e) {
           if (MessageBox.Show("Exit Cook Book?", "Exit?", MessageBoxButtons.OKCanc

我是一个初学者,所以如果我不理解真正的问题,请原谅我!

使用文本框和按钮在数据库中查找记录

看看你正在使用的教程,我想我可以看到你哪里出错了(我不怪你-教程不是完全清楚)。

基于此阶段:http://www.homeandlearn.co.uk/csharp/csharp_s12p5.html

你将在你的Form Load方法中有一个类似这样的语句:

string sql = "SELECT * From CookBookRecipes";
dataAdapt = new System.Data.SqlClient.SqlDataAdapter(sql, con);

但是,教程告诉您添加以下代码以从数据适配器获取数据到数据集,但实际上并没有在上下文中显示代码-我怀疑这就是您出错的地方。

在上面的行之后,你需要添加这个:

dataAdapt.Fill( dataRecipe, "CookBookRecipes" );

然后当您尝试从dataRecipe中获取行时。表["CookBookRecipes"]将不会返回null对象的引用

看起来您可能没有实例化您的数据集。你声明了它,但你没有实例化它,除非你在代码的其他地方做了,你没有向我们展示。

DataSet dataRecipe;

您可以在页面加载事件中实例化它,这样就可以了。

private void Form_Load(object sender, EventArgs e)
{
    dataRecipe = new DataSet();
}