powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Два и более одновременно соеденения к базе
9 сообщений из 9, страница 1 из 1
Два и более одновременно соеденения к базе
    #34068970
PPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Файл web.config

<configuration>
<appSettings>
<add key="dbconnectstring" value="server=172.*.*.**;user id=**;password=**; database=**Marketing;max pool size=70;" />
</appSettings>
</configuration>
=============================================

index.aspx
<script runat="server">

'Список анкет
function AnketaList(dbCommand as SqlCommand) as string
dim out as string
dbcommand.commandtext="select * from anketa_title "
dim reader as sqldatareader=dbcommand.executereader()

while reader.read()
dim t_id as integer=reader.getint32(0)
dim t_name as string=reader.getstring(1)

out = out + "<p><a href=***>"
' ---> тут идет еще запрос
out=OtvetList(t_id,dbCommand)
end while

reader.close()

AnketaList=out
end function





Function OtvetList(ByVal v_id As Integer,dbCommand as SqlCommand) As String

Dim out As String = ""
dbcommand.CommandText = "select * from anketa_otvet WHERE o_vopros='" + v_id.ToString() + "' order by o_id ASC"
Dim reader As SqlDataReader = dbcommand.ExecuteReader()
While reader.Read()
Dim o_id As Integer = reader.GetInt32(0)

out = out + "bla"
End While

reader.Close()

OtvetList = out
End Function





</script>


<%
Dim dbcon As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("dbconnectstring"))
Dim dbcommand As SqlCommand = New SqlCommand()
dbcon.Open()


response.write(AnketaList(dbcommand))



%>







Как быть когда идет цикл выборки данных, и всем сделать еще один зайпрос и вывести данных.
Выходит ошибка

Server Error in '/anketa' Application.
ExecuteReader: Connection property has not been initialized.

в PHP все просто делается, а тут как , обьясните пожалуйста. ?
...
Рейтинг: 0 / 0
Два и более одновременно соеденения к базе
    #34069017
bazaea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если FW 1.x то датаридер монопольно юзает коннектион. От хаоса в космос и далее к наличным
...
Рейтинг: 0 / 0
Два и более одновременно соеденения к базе
    #34069044
PPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По подроьбней если можно с Asp я изучаю недавно =) желательно с примером кода, как мне выйти с сложившейся проблемы .
thk
...
Рейтинг: 0 / 0
Два и более одновременно соеденения к базе
    #34069300
Hratchia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PProServer Error in '/anketa' Application.
ExecuteReader: Connection property has not been initialized.


Так текст ошибки достаточно явный.

Вот тут:
Код: plaintext
1.
2.
3.
4.
5.
Dim out As String = ""
dbcommand.CommandText = "select * from anketa_otvet WHERE o_vopros='" + v_id.ToString() + "' order by o_id ASC"
Dim reader As SqlDataReader = dbcommand.ExecuteReader()
While reader.Read()
Dim o_id As Integer = reader.GetInt32( 0 )

Твоему объекту dbcommand нуже объект типа connection
Код: plaintext
1.
2.
3.
4.
5.
dim con As New SqlConnection
con.ConnectionString = "строка подключения к базе"
dbcommand.connection=con
con.Open()

...
Рейтинг: 0 / 0
Два и более одновременно соеденения к базе
    #34069478
PPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин попутал.
Ошибка на само деле такая

There is already an open DataReader associated with this Command which must be closed first.


Смысл такой что мне нужно рекурсивно выполнять нескольок запросов на одном соеденении. в примере сверху все видно.

В функции AnketaList есть цикл , в этом цикле вызывается функция OtvetList которая использует тоже соеденение что и AnketaList, и ошибка поевляется что DataReader не закрыто...
Так как использовать DataReader не закрывая. ??
...
Рейтинг: 0 / 0
Два и более одновременно соеденения к базе
    #34069688
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в FW 1.1 на соединении может быть только 1 (один) активный датаридер!
Шайтан
...
Рейтинг: 0 / 0
Два и более одновременно соеденения к базе
    #34069746
Hratchia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты еще не до конца изучил ADO:)), если я правильно понял вопрос.

То, что ты хочешь сделать можно сделать при помощи DataSet и Relation.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
dbcommand.commandtext="select * from anketa_title "
Dim da as new SqlDataAdapter (dbcommand)
dim ds as new dataset
da.fill(ds,"t1")

dbcommand.commandtext="select * from anketa_otvet order by o_id ASC"
da.fill(ds,"t2")

ds.Relations.Add("Rel", ds.Tables("t1").Columns("primaryKey"), ds.Tables("t2").Columns("foreignKey"), False)

dim dr as datarow,drChild as datarow

for each dr in ds.tables("t1").rows
'что-то делаем
response.write dr.item( 0 ) & "<br>Child rows<br>"
   for each drChild in dr.GetChildRows("Rel")
   drChild.item( 0 ) &  "<br>"
   next

next



...
Рейтинг: 0 / 0
Два и более одновременно соеденения к базе
    #34069761
PPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хех, понятно так что два соеденения открывать и передавать в функцию 2 ссылки на соеденение. а если мне рекурсивно нужно обойти дерево 10 уровней что делать? =)

Какое решение для моего скрипта есть?
...
Рейтинг: 0 / 0
Два и более одновременно соеденения к базе
    #34069848
bazaea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя проблема в идеологии - грамотно так - если можно вытащить данные за 1 обращение к БД, то нужно вытаскивать за 1 обращение.

Тебе сначала нужно считать все что нужно в свои коллекции, замапить, а уже потом рендерить. Или использовать датаадаптеры/датасеты (с множественным резалсетом) где выкачка/релейшены уже сделаны за тебя.

ЗЫ монопольность пользования коннекшина датаридером в 1х - цена за его скорость считывания.
ЗЗЫ фак и сдк рулятОт хаоса в космос и далее к наличным
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Два и более одновременно соеденения к базе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]