2012-10-25 138 views
0

enter image description here異常錯誤處理

我有像這個錯誤上面每當我想預訂我的機票預訂系統項目飛行有我的代碼中的異常錯誤此錯誤信息被彈出

IndexOutOfRangeException unhandles by user code

...任何想法,我怎麼可以去它我的代碼寫在asp.net使用c sharp?

這是代碼

public partial class TICKET_BOOKING : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    int a; 
    String constring = ConfigurationManager.ConnectionStrings["conn"].ConnectionString.ToString(); 
    public int Autonumber() 
    { 
     SqlConnection con = new SqlConnection(constring); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = con; 
     con.Open(); 
     cmd.CommandText = "select pid from pid"; 
     SqlDataAdapter da = new SqlDataAdapter(); 
     DataSet ds = new DataSet(); 
     DataTable dt = new DataTable(); 
     da.SelectCommand = cmd; 
     da.Fill(dt); 
     a = Convert.ToInt32(dt.Rows[0][0].ToString()) + 1; //this is where its occuring 
     con.Close(); 
     return a; 
    } 

回答

2

試試這個

int a; 
    String constring = ConfigurationManager.ConnectionStrings["conn"].ConnectionString.ToString(); 
    public int Autonumber() 
    { 
     using (SqlConnection con = new SqlConnection(constring)) 
     { 
      SqlCommand cmd = new SqlCommand 
           { 
            CommandType = CommandType.Text, 
            Connection = con, 
            CommandText = "select pid from pid", 
           }; 
      con.Open(); 
      // cmd.Connection.Open(); 
      using (var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)) 
      { 
       while (reader.Read()) 
       { 
        if (!reader.IsDBNull(0)) 
         a = reader.GetInt32(0); 
       } 
      } 
      return a; 
     } 
    } 
+0

有輸入錯誤和reader.close() –

+0

我再次嘗試它有另一個錯誤ExecuteReader:連接屬性尚未初始化。執行當前Web請求期間發生未處理的異常。請檢查堆棧跟蹤以獲取有關錯誤以及源代碼在何處的詳細信息。異常詳細信息:System.InvalidOperationException:ExecuteReader:Connection屬性尚未初始化。線程31:using(var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection )) –

+0

使用Connection = con編輯請現在嘗試。 –

0

你不必在你確定年代一個記錄,以便未來

dt.Rows[0][0] 

失敗。請在加入之前檢查表是否有記錄。類似的東西:

if(dt.Rows.Count > 0) 
{ 
    a = Convert.ToInt32(dt.Rows[0][0].ToString()) + 1; 
} 
+0

我想這似乎工作,但另一個錯誤是彈出PRIMARY KEY約束「PK_Plist」的相關規定。不能在對象'dbo.Plist'中插入重複鍵。 –