Ich versuche, Daten in Gridview von dieser Klasse zu füllen, aber den Fehler zu bekommen kann Tabelle 0 nicht finden. Ich fügte auch das Bild des Fehlers bei .den gleichen Fehler bekommen System.IndexOutOfRangeException: Tabelle 0 der letzten zwei Tage nicht gefunden
ist dies der Code in dem Klassennamen "Class1"
public DataSet get_rates()
{
DataSet ds = new DataSet();
OdbcDataAdapter ad;
try
{
con = new OdbcConnection(ConfigurationManager.ConnectionStrings["connect1"].ConnectionString);
DataTable dt_all_server = new DataTable();
//ad = new OdbcDataAdapter("SELECT * FROM switches where id='"+ip.ToString()+"'", con);
ad = new OdbcDataAdapter("SELECT * FROM switches where server_type='vps'", con);
ad.Fill(dt_all_server);
ad.Dispose();
DataTable dt_running = new DataTable();
dt_running.Columns.Add("Name");
dt_running.Columns.Add("ipaddress");
dt_running.Columns.Add("status");
dt_running.Columns.Add("Server");
DataRow r;
DataTable dt_gateway = new DataTable();
dt_gateway.Columns.Add("Name");
dt_gateway.Columns.Add("ipaddress");
dt_gateway.Columns.Add("status");
dt_gateway.Columns.Add("calls");
DataTable dt_running_other = new DataTable();
dt_running_other.Columns.Add("Name");
dt_running_other.Columns.Add("ipaddress");
dt_running_other.Columns.Add("status");
dt_running_other.Columns.Add("calls");
for (int i = 0; i < dt_all_server.Rows.Count; i++)
{
DataTable dt_switch_record = new DataTable();
con = new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};server=" + dt_all_server.Rows[i]["ip"].ToString() + ";database=voipswitch;uid=" + dt_all_server.Rows[i]["username"].ToString() + ";pwd=" + dt_all_server.Rows[i]["password"].ToString() + "; option=3");
ad = new OdbcDataAdapter("select a.ip_number,b.login,a.id_client from ipnumbers as a,Clientsip as b where a.id_client=b.id_client and a.id_client!='0'", con);
ad.Fill(dt_switch_record);
con = new OdbcConnection(ConfigurationManager.ConnectionStrings["connect1"].ConnectionString);
OdbcCommand cmd = new OdbcCommand();
cmd.Connection = con;
con.Open();
for (int j = 0; j < dt_switch_record.Rows.Count; j++)
{
r = dt_running.NewRow();
string status = "";
cmd.CommandText = "select * from ip_inventory where ipaddress ='" + dt_switch_record.Rows[j]["ip_number"].ToString() + "' and IP_id='" + ip.ToString() + "' and id_client='" + dt_switch_record.Rows[j]["id_client"].ToString() + "'";
int result = cmd.ExecuteNonQuery();
if (result > 0)
{
status = "OK";
}
else
{
status = "Not match";
}
if (status.ToString() == "Not match")
{
r[0] = dt_switch_record.Rows[j]["name"].ToString();
r[1] = dt_switch_record.Rows[j]["ip_number"].ToString();
r[2] = status;
r[3] = dt_all_server.Rows[i]["ip"].ToString();
dt_running.Rows.Add(r);
}
//r[0] = dt_switch_record.Rows[j]["login"].ToString();
//r[1] = dt_switch_record.Rows[j]["ip_number"].ToString();
////r[1] = dt_switch_record.Rows[j]["ipaddress"].ToString().Replace(',', ' ').ToString();
//r[2] = status;
//dt_running.Rows.Add(r);
//cmd.Dispose();
}
con.Close();
ds.Tables.Add(dt_running);
cmd.Dispose();
// ================ Running Calls ==========================
#region Running Calls
DataTable dt_switch_record1 = new DataTable();
con = new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};server=" + dt_all_server.Rows[i]["ip"].ToString() + ";database=voipswitch;uid=" + dt_all_server.Rows[i]["username"].ToString() + ";pwd=" + dt_all_server.Rows[i]["password"].ToString() + "; option=3");
con.Open();
ad = new OdbcDataAdapter("select 'Answered' as no_calls,a.ip_number,b.login,a.id_client from calls as a,clientsip as b where a.id_client=b.id_client and a.Client_type='0' and a.call_start between '" + DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00' and '" + DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59' group by a.ip_number", con);
ad.Fill(dt_switch_record1);
con.Close();
con = new OdbcConnection(ConfigurationManager.ConnectionStrings["connect1"].ConnectionString);
OdbcCommand cmd1 = new OdbcCommand();
cmd1.Connection = con;
con.Open();
for (int j = 0; j < dt_switch_record1.Rows.Count; j++)
{
r = dt_gateway.NewRow();
string[] ip_num = dt_switch_record1.Rows[j]["ip_number"].ToString().Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
string status = "";
cmd1.CommandText = "select * from ip_inventory where ipaddress='" + ip_num[0].ToString() + "' and IP_id='" + ip.ToString() + "' and id_client='" + dt_switch_record1.Rows[j]["id_client"].ToString() + "'";
int result = cmd1.ExecuteNonQuery();
if (result > 0)
{
status = "OK";
}
else
{
status = "Not match";
}
r[0] = dt_switch_record1.Rows[j]["login"].ToString();
//r[1] = dt_switch_record1.Rows[j]["ip_number"].ToString();
r[1] = ip_num[0].ToString();
r[2] = status;
r[3] = dt_switch_record1.Rows[j]["no_calls"].ToString();
dt_gateway.Rows.Add(r);
}
con.Close();
cmd1.Dispose();
#endregion
// ================ Failed Calls ============================
#region Failed Calls
DataTable dt_switch_record2 = new DataTable();
con = new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};server=" + dt_all_server.Rows[i]["ip"].ToString() + ";database=voipswitch;uid=" + dt_all_server.Rows[i]["username"].ToString() + ";pwd=" + dt_all_server.Rows[i]["password"].ToString() + "; option=3");
con.Open();
ad = new OdbcDataAdapter("select 'NO' as no_calls,a.ip_number,b.login,a.id_client from callsfailed as a,clientsip as b where a.id_client=b.id_client and a.Client_type='0' and a.call_start between '" + DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00' and '" + DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59' group by a.ip_number", con);
ad.Fill(dt_switch_record2);
con.Close();
con = new OdbcConnection(ConfigurationManager.ConnectionStrings["connect1"].ConnectionString);
OdbcCommand cmd2 = new OdbcCommand();
cmd2.Connection = con;
con.Open();
for (int j = 0; j < dt_switch_record2.Rows.Count; j++)
{
r = dt_gateway.NewRow();
string[] ip_num = dt_switch_record2.Rows[j]["ip_number"].ToString().Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
string status = "";
cmd2.CommandText = "select * from ip_inventory where ipaddress='" + ip_num[0].ToString() + "' and IP_id='" + ip.ToString() + "' and id_client='" + dt_switch_record2.Rows[j]["id_client"].ToString() + "'";
int result = cmd2.ExecuteNonQuery();
if (result > 0)
{
status = "OK";
}
else
{
status = "Not match";
r[0] = dt_switch_record2.Rows[j]["login"].ToString();
//r[1] = dt_switch_record2.Rows[j]["ip_number"].ToString();
r[1] = ip_num[0].ToString();
r[2] = status;
r[3] = dt_switch_record2.Rows[j]["no_calls"].ToString();
dt_gateway.Rows.Add(r);
}
}
con.Close();
cmd2.Dispose();
ds.Tables.Add(dt_gateway);
#endregion
// ================ Other Client =============================
DataTable dt_switch_record3 = new DataTable();
con = new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};server=" + dt_all_server.Rows[i]["ip"].ToString() + ";database=voipswitch;uid=" + dt_all_server.Rows[i]["username"].ToString() + ";pwd=" + dt_all_server.Rows[i]["password"].ToString() + "; option=3");
con.Open();
if (ip.ToString() == "9" || ip.ToString() == "10" || ip.ToString() == "11" || ip.ToString() == "13" || ip.ToString() == "14")
{
ad = new OdbcDataAdapter("select 'Answered' as no_calls,a.ip_number,b.login,a.id_client,'Not match' as status from calls as a,clientse164 as b where a.id_client=b.id_client and a.Client_type='2' and a.call_start between '" + DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00' and '" + DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59' group by a.ip_number", con);
}
else
{
ad = new OdbcDataAdapter("select 'Answered' as no_calls,a.ip_number,b.login,a.id_client,'Not match' as status from calls as a,clientsshared as b where a.id_client=b.id_client and a.Client_type='32' and a.call_start between '" + DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00' and '" + DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59' group by a.ip_number", con);
}
ad.Fill(dt_switch_record3);
con.Close();
for (int j = 0; j < dt_switch_record3.Rows.Count; j++)
{
r = dt_running_other.NewRow();
r[0] = dt_switch_record3.Rows[j]["login"].ToString();
r[1] = dt_switch_record3.Rows[j]["ip_number"].ToString();
r[2] = dt_switch_record3.Rows[j]["status"].ToString();
r[3] = dt_switch_record3.Rows[j]["no_calls"].ToString();
dt_running_other.Rows.Add(r);
}
}
ds.Tables.Add(dt_running_other);
ds.Tables.Add(dt_gateway);
}
catch
{
//ad.Dispose();
}
return ds;
}
Und das ist der Code in meinem CS-Datei:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
private void bind1()
{
Class1 ad = new Class1();
//ad.ip1 = ddl_ip.SelectedValue.ToString();
//Literal_GATEWAY_IP.Text = ddl_ip.SelectedItem.Text.ToString();
//Literal_running_IP.Text = ddl_ip.SelectedItem.Text.ToString();
//Literal_running_IP.Text = ddl_ip.SelectedItem.Text.ToString();
DataSet ds = ad.get_rates();
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
GridView2.DataSource = ds.Tables[1];
GridView2.DataBind();
GridView3.DataSource = ds.Tables[2];
GridView3.DataBind();
}
Wo erhalten Sie die Ausnahme? – Guy
@Guy Zeile 28: DataSet ds = ad.get_rates(); Zeile 29: Zeile 30: GridView1.DataSource = ds.Tables [0]; //// hier bekomme ich den Fehler Zeile 31: GridView1.DataBind(); Zeile 32: GridView2.DataSource = ds.Tables [1]; //// hier bekomme ich den Fehler –
Ich denke, die SQL-Abfrage gibt 0 Zeilen zurück, so gibt es keine Daten in ds.Tables [0]. Atoch der Debugger und schaue –