Как я могу использовать executereader для разных переменных?

Я использую ExecuteScalar для одного запроса вот так:

try
{
    OleDbConnection Connection;
    using (Connection = new OleDbConnection("Provider=MSDAORA.1;Data Source=DATABASE:1521/orcl;Persist Security Info=True;Password=PASSWORD;User ID=USERNAME"))
    {
    OleDbCommand Command1, Command2, Command3;

    Command1 = new OleDbCommand("SELECT HOUR FROM Table1 WHERE type='CAR' and name='FERRARI'",", Connection);
    Command2 = new OleDbCommand("SELECT HOUR FROM Table1 WHERE type='CAR' and name='FORD'", Connection);
    Command3 = new OleDbCommand("SELECT HOUR FROM Table1 WHERE type='CAR' and name='OPEL'", Connection);

    Connection.Open();
    var1 = (int)Command1.ExecuteScalar();
    var2 = (int)Command2.ExecuteScalar();
    var3 = (int)Command3.ExecuteScalar();
    Connection.Close();
} 

Это работает нормально для меня. Но 3 (и больше для других баз данных) запросов ждут так много из-за базы данных. Как я могу выбрать всю таблицу (выбрать * из таблицы 1) и после выполнения команд для каждого условия где? Можете ли вы показать мне пример для этого в моем примере кода? Спасибо.

1 ответ

Вы можете отправить несколько команд в базу данных одновременно (через точку с запятой). Вы можете получить каждый набор результатов, используя OleDb.NextResult (). Это приведет к тому, что в базу данных будет один ход назад и вперед, а не три, которые есть у вас сейчас.

Другие вопросы по тегам