цикл через набор данных из sqlitereader c # - PullRequest
0 голосов
/ 26 августа 2018

Я получаю данные из базы данных через это:

public static DataSet read_db(string sql)
    {
        DataSet ds = new DataSet();

        try
        {
            SQLiteConnection m_dbConnection;
            m_dbConnection = new SQLiteConnection("Data Source=movies.db;Version=3;");
            m_dbConnection.Open();
            SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);

            //reader = command.ExecuteReader();
            using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(command))
            {
                adapter.Fill(ds);
            }

            m_dbConnection.Close();
            return ds;
        }
        catch (SQLiteException ex)
        {
            string code = ex.Message.ToString();
            MessageBox.Show("Error connection to database: " + code);
            return ds;
        }
    }

Теперь я пытаюсь пройтись по этому набору данных и получить значения из базы данных, используя обычный загрузчик данных из sQLite, но этоне будет работать, потому что он держит соединение открытым, пока я не закончу читать, что означает, что мое приложение открыто.

Так что теперь мне нужно изменить все мои устройства чтения данных на путь с набором данных, это был мой предыдущий способ чтения данных:

SQLiteDataReader reader = database.read_db("select * from proxies");
            while (reader.Read())
            {
                DataGridViewRow row = new DataGridViewRow();
                row.CreateCells(proxytable);
                row.Cells[0].Value = reader["id"];
                row.Cells[1].Value = reader["proxy"];
                row.Cells[2].Value = reader["port"];
                row.Cells[3].Value = reader["username"];
                row.Cells[4].Value = reader["password"];
                if (reader["dead"].ToString() == "0")
                { 
                    status = "ok";
                }
                else if(reader["dead"].ToString() == "2")
                {
                    status = "not tested";
                }
                else
                {
                    status = "ok";
                }
                row.Cells[5].Value = status;

                this.proxytable.Rows.Add(row);
            }

Как я могу изменить это для работы с набором данных?Если возможно, с минимальными изменениями, потому что я использовал это много.

1 Ответ

0 голосов
/ 26 августа 2018

попробуй вот так ....

        DataSet ds=  database.read_db("select * from proxies");                
        if (ds.Tables[0].Rows.Count > 0)
        {
        foreach (DataRow drw in ds.Tables[0].Rows)
        {

         DataGridViewRow row = new DataGridViewRow();
         row.CreateCells(proxytable);
         row.Cells[0].Value = drw ["id"];
         row.Cells[1].Value = drw ["proxy"];
         row.Cells[2].Value = drw ["port"];
         row.Cells[3].Value = drw ["username"];
         row.Cells[4].Value = drw ["password"];
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...