проблемы с интерфейсом БД c# - PullRequest
0 голосов
/ 27 января 2020

Я использую просмотр списка, чтобы распечатать все мои таблицы в базе данных с количеством значений, которое содержит каждое из них. Моя проблема в том, что когда я впервые начал проект, значения были правильными, и теперь некоторые из них равны +1. Ни одна строка кода не влияет на это, я запустил другой проект, и проблема остается.

Это функция кнопки:

    private void button2_Click(object sender, EventArgs e)
    {
        listView1.Clear();
        listView1.View = View.Details;
        listView1.Columns.Add("Tabel");
        listView1.Columns.Add("Numar campuri");
        List<string> tables = GetTables(conString);
        List<string> numbers = GetNum(conString);
        for (int i = 0; i < tables.Count(); i++)
        {
            listView1.Items.Add(tables[i]).SubItems.Add(numbers[i].ToString());
        }
        listView1.Columns[0].Width = -1;
        listView1.Columns[1].Width = -2;
        listView1.Columns[1].TextAlign = HorizontalAlignment.Center;
    }

GetTables (имя таблицы) и GetNum (число данных):

   public static List<string> GetTables(string connectionString)
    {
        using (MySqlConnection connection = new MySqlConnection(connectionString))
        {
            connection.Open();
            DataTable schema = connection.GetSchema("Tables");
            List<string> TableNames = new List<string>();
            foreach (DataRow row in schema.Rows)
            {
                TableNames.Add(row[2].ToString());
            }
            return TableNames;
        }
    }
    public static List<string> GetNum(string connectionString)
    {
        using (MySqlConnection connection = new MySqlConnection(connectionString))
        {
            connection.Open();
            DataTable schema = connection.GetSchema("Tables");
            List<string> TableNum = new List<string>();
            foreach (DataRow row in schema.Rows)
            {
                TableNum.Add(row[7].ToString());
            }
            return TableNum;
        }
    }

Я напечатал данные из GetNum и обнаружил, что строка [7] печатает количество значений из указанной таблицы c.

БД локально - xampp

В чем проблема?

1 Ответ

0 голосов
/ 28 января 2020

Я предлагаю использовать динамически сформированный запрос, чтобы получить количество строк и вернуть словарь (если имена таблиц уникальны), в противном случае используйте List<KeyValuePair<string, int>>.

    public static Dictionary<string, int> GetTables(string connectionString)
    {
        using (MySqlConnection connection = new MySqlConnection(connectionString))
        {
            connection.Open();
            DataTable schema = connection.GetSchema("Tables");
            Dictionary<string, int> TableNames = new Dictionary<string, int> ();
            foreach (DataRow row in schema.Rows)
            {
                string tableName = row[2].ToString();
                int countOfRows = GetNum(connectionString, tableName);
                TableNames.Add(tableName , countOfRows);
            }
            return TableNames;
        }
    }
    public static int GetNum(string connectionString, string tableName)
    {
        using (MySqlConnection connection = new MySqlConnection(connectionString))
        {
            connection.Open();
            //do query here 
            string query = String.Format("SELECT COUNT(*) FROM {0}", tableName);
            //result = connection -> get results from query
            //return result;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...