使用文本框和按钮在数据库中查找记录
本文关键字:数据库 查找记录 按钮 文本 | 更新日期: 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();
}