我正在研究一個相對直接的C#項目,該項目通過OleDb將Access數據庫連接到各種功能(如添加,刪除和編輯記錄)。現在,在嘗試實施數據庫搜索之前,一切工作都很順利。在搜索數據庫表的條目時出現NullReferenceException錯誤
以下行(在搜索框代碼中)在調試期間拋出異常,但我不確定實際上是什麼導致它中斷的空值。
ReturnedResults = DBDataSet.Tables["Movies"].Select("Title like '%" + Search + "%'");
所以我們的目標是在數據庫中通過「電影」表搜索和查找基於用戶的輸入(存儲在「搜索」字符串)電影。
搜索框的代碼可以在下面找到,數據庫初始化和連接在底部。
private void SearchTextBox_Changed(object sender, EventArgs e)
{
string SearchString = SearchTextBox.Text.ToString();
int Results = 0;
DataRow[] ReturnedResults;
ReturnedResults = DataSet.Tables["Movies"].Select("Title like '%" + SearchString + "%'");
Results = ReturnedResults.Length;
if (Results > 0)
{
SearchResultsBox.Items.Clear();
for (int i = 0; i <= Results; i++)
{
DataRow Row;
Row = ReturnedResults[i];
SearchResultsBox.Items.Add(Row["Title"].ToString());
}
}
else
{
SearchResultsBox.Items.Clear();
MessageBox.Show("Error! No items found.");
}
}
對於這裏有些情況下是主數據庫初始化/連接和形式加載事件:
public partial class BaseForm : Form
{
System.Data.OleDb.OleDbConnection Connection;
DataSet DataSet;
System.Data.OleDb.OleDbDataAdapter DataAdapter;
int MaxRows = 0;
int CurrentRow = 0;
public BaseForm()
{
InitializeComponent();
}
private void BaseForm_Load(object sender, EventArgs e)
{
Connection = new System.Data.OleDb.OleDbConnection();
Connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=Movies.accdb";
Connection.Open();
DataSet = new DataSet();
string sq1 = "SELECT * From Movies";
DataAdapter = new System.Data.OleDb.OleDbDataAdapter(sq1, DBConnection);
DataAdapter.Fill(DBDataSet);
MaxRows = DataSet.Tables[0].Rows.Count;
DisplayRecord();
}
設定[0]解決了空的異常,但提出的另一問題表之前,所以更好的方式噸檢查。我從行中收到'Index超出數組範圍':Row = ReturnedResults [i]; – user1835615
嗯只是注意一件事。在您的for循環中檢查修改條件爲'我<結果' – Habib
明白了!謝謝Habib。 – user1835615