У меня есть следующий код:индекс системы из исключений диапазона C#
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TimeClock
{
class Company
{
DataTable rows = new DataTable();
public Company()
{
MySqlConnection connection = null;
try
{
string connectionString = TimeClock.Properties.Settings.Default.timeclockConnectionString;
connection = new MySqlConnection(connectionString);
connection.Open();
MySqlCommand command = new MySqlCommand("SELECT * FROM companies WHERE ID = @ID LIMIT 1", connection);
command.Parameters.AddWithValue("@ID", TimeClock.Properties.Settings.Default.CompanyID);
MySqlDataAdapter da = new MySqlDataAdapter(command);
da.Fill(rows);
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine(ex);
}
finally
{
if (connection != null)
{
connection.Close();
}
}
}
public String getName()
{
DataRow row = rows.Rows[0];
return row["company_name"].ToString();
}
}
}
Я знаю, почему я получаю эту ошибку: сказать, что никакие записи не были найдены в базе данных, конечно, ряд [0] будет нет, поэтому исключение. Но как мне работать, когда нет записей для хранения в Datatable? Кстати, я довольно новичок в C#, и любой вход был бы замечательным; не стесняйтесь критиковать.
Как насчет проверки 'rows.Rows.Count' больше, чем' 0' или нет? –
Я думал об этом, но это означало бы делать это для каждого метода ... Я с законной точки зрения считал, что этот подход ошибочен ... – Dimitri
@Dimitri Если вы обеспокоены дублированием кода, и это хорошо, что вы есть, вы могли бы создайте метод проверки количества строк. Таким образом, вы можете использовать его во всем своем коде. –