0

ここに画像の説明を入力

航空会社予約システム プロジェクトでフライトを予約しようとすると、上の画像でこのエラーが発生します コードに例外エラーがあり、このエラー メッセージが表示されました

IndexOutOfRangeException unhandles by user code

...どうすればそれを実行できるかについてのアイデアはありますか私のコードはCシャープを使用してasp.netで書かれていますか??

これはコードです

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;
    }
4

2 に答える 2

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;
        }
    }
于 2012-10-25T07:44:32.527 に答える
0

データブルにレコードがないので、次へ

dt.Rows[0][0]

失敗します。それらにアクセスする前に、テーブルにレコードがあるかどうかを確認してください。そんな感じ:

if(dt.Rows.Count > 0) 
{ 
   a = Convert.ToInt32(dt.Rows[0][0].ToString()) + 1; 
}
于 2012-10-25T07:35:30.130 に答える