Как я могу выполнить несколько запросов к базе данных в ASP.NET C #? - PullRequest
0 голосов
/ 05 марта 2009

В каждом написанном мною приложении ASP.NET я делаю количество запросов к базе данных, прежде чем выводить информацию на веб-страницу.

Например:

var DataTable1 = GetDataTable("Select * From Customers");
var DataTable2 = GetDataTable("Select * From Products");
var DataTable3 = GetDataTable("Select * From Orders");

Насколько я знаю, приведенный выше код совершил бы 3 отдельные поездки в базу данных и выполнял бы их один за другим.

Можно ли как-нибудь собрать мои параметризованные операторы SQL и совершить только 1 поездку на сервер базы данных?

Ответы [ 4 ]

6 голосов
/ 05 марта 2009
var SqlString = "SELECT * FROM Customers; SELECT * FROM Products; SELECT * FROM ORDERS;");
var ds = GetDataSet(SqlString);
var DataTable1 = ds.Tables(0);
var DataTable2 = ds.Tables(1);
var DataTable3 = ds.Tables(2);
1 голос
/ 19 декабря 2011

Мое решение:

SqlConnection con = new SqlConnection("Server=CLASS-III-WKS10\\SQLEXPRESS;Initial 
Catalog=wind;Integrated Security=True");
int[] id=new int[9];
int i = 0;
page_load()
{
    con.Open();
    SqlCommand cmd = new SqlCommand("select *from windmill", con);
    SqlDataReader rd = cmd.ExecuteReader();
    while (rd.Read())
    {
        id[i] = rd.GetInt32(9);
        i++;
        //MessageBox.Show(id.ToString());  
    }
    rd.close();
    SqlCommand cmd1 = new SqlCommand("Update windmill set State='Stopped',PmState='Not Available'where Id=0", con);
    cmd1.ExecuteNonQuery(); 
}
0 голосов
/ 05 марта 2009

Используйте точки с запятой для разделения операторов SQL и reader.NextResult для получения каждого набора. Ваш код будет выглядеть примерно так.

    Using con As New SqlConnection
        Using cmd As New SqlCommand("Select * From Customers; Select * From Products; Select * From Orders")
            Using reader = cmd.ExecuteReader
                Dim dt1 As DataTable
                dt1.Load(reader)

                reader.NextResult()

                Dim dt2 As DataTable
                dt2.Load(reader)

                reader.NextResult()


                Dim dt3 As DataTable
                dt3.Load(reader)

            End Using
        End Using
    End Using
0 голосов
/ 05 марта 2009

Создайте класс Thread и поместите в него класс, который принимает в качестве входных данных строковый запрос: затем создайте объект Thread и запустите объект.

Проверьте это http://msdn.microsoft.com/en-us/library/aa645740(VS.71).aspx

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