![](/img/trans.png)
[英]I do not know why I am getting a System.IndexOutOfRangeException? C#
[英]Why am I getting System.IndexOutOfRangeException
我還有另外兩個按鈕,它們的代碼幾乎完全相同。 但是,當我嘗試運行此代碼以獲取所有結果時,出現錯誤“ System.IndexOutOfRangeException”。
“顯示無效的NHS編號”按鈕有效,但我看不到為什么會起作用,但“顯示所有記錄”按鈕無效。 錯誤在下面的代碼塊的dgvResults部分中,而不是在第一個代碼塊中。
private void cmdShowInvalidNHSnumbers_Click(object sender, EventArgs e)
{
string databaseFilename;
string sql;
dgvResults.ColumnCount = 3;
dgvResults.Columns[0].Name = "NHSNumber";
dgvResults.Columns[1].Name = "Patient";
dgvResults.Columns[2].Name = "Problem";
dgvResults.Rows.Clear();
databaseFilename = Application.StartupPath + "\\nhsnumberchecker.db";
System.Data.SQLite.SQLiteConnection m_dbConnection;
m_dbConnection = new System.Data.SQLite.SQLiteConnection("Data Source=" + databaseFilename + ";Version=3;");
m_dbConnection.Open();
sql = @"
SELECT * FROM results
-- WHERE NHSNumber = 'N'
WHERE NHSNumberValid = 'N'
ORDER BY Surname;";
System.Data.SQLite.SQLiteCommand command = new System.Data.SQLite.SQLiteCommand(sql, m_dbConnection);
System.Data.SQLite.SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
dgvResults.Rows.Add(reader["NHSNumber"], reader["Surname"] + ", " + reader["GivenName"], NHSnumberError(reader.GetString(0)));
}
dgvResults.Refresh();
dgvResults.AutoResizeColumns();
m_dbConnection.Close();
}
private void cmdShowAllResults_Click(object sender, EventArgs e)
{
string databaseFilename;
string sql;
dgvResults.ColumnCount = 7;
dgvResults.Columns[0].Name = "NHSNumber";
dgvResults.Columns[1].Name = "DOB";
dgvResults.Columns[2].Name = "Title";
dgvResults.Columns[3].Name = "Surname";
dgvResults.Columns[4].Name = "GivenName";
dgvResults.Columns[5].Name = "Gender";
dgvResults.Columns[6].Name = "Problem";
dgvResults.Rows.Clear();
databaseFilename = Application.StartupPath + "\\nhsnumberchecker.db";
System.Data.SQLite.SQLiteConnection m_dbConnection;
m_dbConnection = new System.Data.SQLite.SQLiteConnection("Data Source=" + databaseFilename + ";Version=3;");
m_dbConnection.Open();
sql = @"
SELECT * FROM results
ORDER BY Surname;";
System.Data.SQLite.SQLiteCommand command = new System.Data.SQLite.SQLiteCommand(sql, m_dbConnection);
System.Data.SQLite.SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
dgvResults.Rows.Add(reader["NHSNumber"], reader["DOB"], reader["Title"], reader["Surname"] + ", " + reader["GivenName"],
reader["Gender"], reader["Problem"], NHSnumberError(reader.GetString(0))); //This section is causing the error
}
dgvResults.Refresh();
dgvResults.AutoResizeColumns();
m_dbConnection.Close();
}
}
代碼的下半部分是獲取錯誤消息的代碼。 我不知道其中的哪一部分“超出范圍”。
也許您的查詢結果包含一個“,”字符。 嘗試通過添加替換方法來修改所有條目,以查看是否正確:
dgvResults.Rows.Add(reader["NHSNumber"].Replace("," , "") , ............
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.