как правильно заполнить DataSet дважды (после пустого набора) - PullRequest
0 голосов
/ 07 декабря 2010

У меня есть SqlConnection с sqlquery, который может не дать никаких результатов.В редких случаях это происходит, у меня есть другой sqlquery и другое подключение к базе данных.Должен быть лучший способ сделать это, нет?

Кстати, лучше ли закрывать соединение после .Fill?Полагаю, что так, но нигде не видел, чтобы он использовался.

Я все еще начинаю в C # /. Net - Спасибо!

SqlConnection dbSqlConnection = new SqlConnection(--);
SqlDataAdapter dbSqlDataAdapter = new SqlDataAdapter(sqlquery, dbSqlConnection);
DataSet dbDataSet = new DataSet();
dbSqlDataAdapter.Fill(dbDataSet, "popGrid");
dbSqlConnection.Close();

if (dbDataSet.Tables["popGrid"].Rows.Count == 0)
{
    SqlDataAdapter newSqlDataAdapter = new SqlDataAdapter(sqlquery2, dbSqlConnection);
    newSqlDataAdapter.Fill(dbDataSet, "popGrid");
    dbSqlConnection.Close();

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Что касается первого вопроса, я думаю, что это также нормально, если вы дважды подключитесь к БД после проверки, что первый результат пуст.Вам не нужно превращать два в один запрос, если только это действие (выборка данных дважды) не является слишком частым или если подключение к БД стоит много времени (например, вы в США, а БД в Великобритании, возможно, верно?) И второй вопрос:

using (SqlConnection dbSqlConnection = new SqlConnection(connStr))
{
    //do things
}//the connection will be disposed automatically here
0 голосов
/ 07 декабря 2010

Вы можете сделать один запрос:

Select * From SqlQuery1 Into TempTable1;

IF (SELECT Count(*) From TempTable1) = 0 BEGIN
  Select * From SqlQuery2;
ELSE
  Select * From TempTable1;
END

Это псевдокод, так как я его не проверял, и это отчасти по прихоти. Прошло некоторое время с тех пор, как я написал запросы. Итак, для домашней работы изучите, как использовать оператор if, чтобы проверить, как определить, нет ли во временной таблице строк, а затем вернуть другой запрос.

Edit:

Поместить оба запроса в один запрос пренебрежимо лучше, чем вызвать два запроса. Так что это, скорее всего, не стоит делать, если у вас нет действительно веской причины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...