簡體   English   中英

數據庫錯誤:位置0沒有行

[英]Database Error: There is no row at position 0

我相信這個問題是在幾個月前被問到的,但我相信我的情況有所不同,同樣的規則也許不適用。

每次我執行此方法時都會彈出相同的錯誤。 位置0沒有行。如果我將[0]改為[1]或[15]; [1]等處沒有行。這是否意味着我的數據庫連接都沒有? 我應該寫一些if語句來確定行是否在那里?

    public bool UpdateOrderToShipped(string order)
{
    orderNumber = order;
    string batch = ConfigurationManager.AppSettings["SuccessfulOrderBatch"];
    string statement = "UPDATE SOP10100 SET BACHNUMB = '"+ batch +"' WHERE SOPNUMBE = @SOPNUMBE";
    SqlCommand comm = new SqlCommand(statement, connectionPCI);
    comm.Parameters.Add("SOPNUMBE", orderNumber);
    try
    {
        comm.Connection.Open();
        comm.ExecuteNonQuery();
        comm.Connection.Close();
    }
    catch(Exception e)
    {
        comm.Connection.Close();
        KaplanFTP.errorMsg = "Database error: " + e.Message;
    }

    statement = "SELECT SOPTYPE FROM SOP10100 WHERE SOPNUMBE = @SOPNUMBE";
    comm.CommandText = statement;
    SqlDataAdapter da = new SqlDataAdapter(comm);
    DataTable dt = new DataTable();
    da.Fill(dt);
    soptype = dt.Rows[0]["SOPTYPE"].ToString();    //errror here

    return true;
}

這很簡單......這意味着您的查詢沒有返回任何結果。 您始終必須進行防御性編碼並在嘗試索引之前檢查Rows數組中是否包含任何項目。 就像是:

if (dt.Rows.Count > 0)
    soptype = dt.Rows[0]["SOPTYPE"].ToString();
else
    somethingWentWrong();
for (int i = 0; i <= dt.rows.count; i++) { // do something till rows in DT }

您可能在表中有數據但我認為連接在第一次查詢后關閉。 嘗試再次打開連接。 你在第一個SQL查詢中也有字符串連接,這不是一個好習慣。 嘗試使用塊而不是try .. catch,只是為了更好的代碼。 正如喬爾建議的那樣,使用支票

我遇到了同樣的問題,然后我意識到我的第一列不是基於整數的。 所以當我編輯第一個時,我遇到了同樣的錯誤。

因此,我的建議是不要編輯第一列或將第一列設為ID列,在這種情況下您不必編輯任何內容。

暫無
暫無

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

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