System.Data.dll 中发生类型为“System.IndexOutOfRangeException”的未处理异常在位置 0 处没有行

问题描述 投票:0回答:2
using System; 
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace LMS
{
public partial class Member : Form
{
    public Member()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        CreateNew();
    }


    void CreateNew()
    {
        textBox1.Text = "";
        textBox2.Text = "";
        textBox3.Text = "";
        textBox4.Text = "";
        textBox5.Text = "";
        comboBox1.Text = "";
        comboBox2.Text = "";
        comboBox3.Text = "";
        Connection con = new Connection();
        SqlDataAdapter sda = new SqlDataAdapter("Proc_member", con.ActiveCon());
        sda.SelectCommand.CommandType = CommandType.StoredProcedure;
        DataTable dt = new DataTable();
        sda.Fill(dt);
        textBox1.Text = dt.Rows[0][0].ToString();
        textBox2.Focus();
    }

    }

    }

我无法从这个过程中获得任何价值。我以不同的形式使用了具有不同过程名称的相同代码(并且我已经保存了所有这些代码)。它工作得很好,但在其他形式下它会不断产生这个错误。我是初学者,所以请用最简单的方式回答

c# proc-sql windowsformsintegration
2个回答
2
投票

你的数据表是空的,你需要先执行命令

using (SqlCommand command = new SqlCommand(sSql, con))
{
     using (SqlDataReader reader = command.ExecuteReader())
     {
          while (reader.Read())
          {     
               DataTable dtSchema = reader.GetSchemaTable();
               for (int i = 0; i < reader.FieldCount; i++)
               {
                   var fieldVal = reader.GetValue(i).ToString();
               }
          }
     }
}

0
投票

private void button1_Click(object sender, EventArgs e) { string[,] name = new string[2, 3] { {"amir","amir1","amir2" }, { " ali","ali2","ali3" } }; int[,][] grid = new int[2,3][]; grid[0,0] = new int[4] { 20, 15, 18, 17 }; grid[0,1] = new int[2] { 14, 19 }; grid[0,2] = new int[3] { 16, 14, 20 }; grid[1,0] = new int[5] { 20, 15, 18, 17,16 }; grid[1,1] = new int[1] { 19 }; grid[1,2] = new int[4] { 16, 14, 13,15 }; 对于 (int i = 0; i < 6; i++) { int sum = 0; for (int j = 0; j < grid.Length - 1; j++) sum = sum + grid[i, i][j];

            listBox1.Items.Add(name[i,i] + " : " + (sum * 1.0 /
                grid[i,i].Length).ToString("##.00"));
        
        }
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.