Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Два и более одновременно соеденения к базе / 9 сообщений из 9, страница 1 из 1
20.10.2006, 11:25
    #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
20.10.2006, 11:33
    #34069017
bazaea
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два и более одновременно соеденения к базе
если FW 1.x то датаридер монопольно юзает коннектион. От хаоса в космос и далее к наличным
...
Рейтинг: 0 / 0
20.10.2006, 11:37
    #34069044
PPro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два и более одновременно соеденения к базе
По подроьбней если можно с Asp я изучаю недавно =) желательно с примером кода, как мне выйти с сложившейся проблемы .
thk
...
Рейтинг: 0 / 0
20.10.2006, 12:23
    #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
20.10.2006, 12:57
    #34069478
PPro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два и более одновременно соеденения к базе
Блин попутал.
Ошибка на само деле такая

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


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

В функции AnketaList есть цикл , в этом цикле вызывается функция OtvetList которая использует тоже соеденение что и AnketaList, и ошибка поевляется что DataReader не закрыто...
Так как использовать DataReader не закрывая. ??
...
Рейтинг: 0 / 0
20.10.2006, 13:40
    #34069688
Шайтан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два и более одновременно соеденения к базе
в FW 1.1 на соединении может быть только 1 (один) активный датаридер!
Шайтан
...
Рейтинг: 0 / 0
20.10.2006, 13:51
    #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
20.10.2006, 13:54
    #34069761
PPro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Два и более одновременно соеденения к базе
хех, понятно так что два соеденения открывать и передавать в функцию 2 ссылки на соеденение. а если мне рекурсивно нужно обойти дерево 10 уровней что делать? =)

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

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

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


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