簡體   English   中英

C#和SQL System.ArgumentOutOfRangeException

[英]C# and SQL System.ArgumentOutOfRangeException

我試圖創建一個使用sql連接到數據庫的應用程序,並且試圖創建一個dataview,它查看當前選定的dataview,然后從另一個表中拉回信息。 我遵循了一些指南,並且已經相當接近了,但是我目前遇到此錯誤:

mscorlib.dll中發生了'System.ArgumentOutOfRangeException'類型的未處理異常。其他信息:索引超出范圍。 必須為非負數並且小於集合的大小。

任何幫助將不勝感激。 (Visual Studio在下面第一行的末尾顯示錯誤)

string PersonID = Grid1.SelectedRows[0].Cells[0].Value.ToString();
sqlDataAdapter2.SelectCommand.CommandText = "select * from Personal_Emails where PersonID=" + PersonID;
sqlDataAdapter2.Fill(dataSet21.Personal_Emails);

您是否檢查過SelectedRowsCells是否具有選定值? 您可以使用調試器並查看值。

也:

您正在將PersonID定義為字符串。 它是數據庫中的字符串值嗎? 如果是這樣,您是否嘗試過:

sqlDataAdapter2.SelectCommand.CommandText = "SELECT * FROM Personal_Emails WHERE PersonID='" + PersonID + "'";

您需要先檢查是否存在某些物品,然后才能使用它。

var selectedRow = Grid1.SelectedRows[0];
var cell = selectedRow == null ? false : selectedRow.Cells.Any();
var personID = (cell) ? Grid1.SelectedRows[0].Cells[0].Value.ToString() : "";

if(!string.isNullOrEmpty(personID)
    // do query stuff
string PersonID = Grid1.SelectedRows[0].Cells[0].Value.ToString();

驗證此行是否返回某些值<> null。

示例:如果網格沒有選定的行,它將返回錯誤或空值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM